1 // -----------------------------------------------------------------------
2 // Copyright (C) 2006 - 2008 FRESCOR consortium partners:
4 // Universidad de Cantabria, SPAIN
5 // University of York, UK
6 // Scuola Superiore Sant'Anna, ITALY
7 // Kaiserslautern University, GERMANY
8 // Univ. Politécnica Valencia, SPAIN
9 // Czech Technical University in Prague, CZECH REPUBLIC
11 // Thales Communication S.A. FRANCE
12 // Visual Tools S.A. SPAIN
13 // Rapita Systems Ltd UK
16 // See http://www.frescor.org for a link to partners' websites
18 // FRESCOR project (FP6/2005/IST/5-034026) is funded
19 // in part by the European Union Sixth Framework Programme
20 // The European Union is not liable of any use that may be
24 // based on previous work (FSF) done in the FIRST project
26 // Copyright (C) 2005 Mälardalen University, SWEDEN
27 // Scuola Superiore S.Anna, ITALY
28 // Universidad de Cantabria, SPAIN
29 // University of York, UK
31 // FSF API web pages: http://marte.unican.es/fsf/docs
32 // http://shark.sssup.it/contrib/first/docs/
34 // This file is part of FOSA (Frsh Operating System Adaption)
36 // FOSA is free software; you can redistribute it and/or modify it
37 // under terms of the GNU General Public License as published by the
38 // Free Software Foundation; either version 2, or (at your option) any
39 // later version. FOSA is distributed in the hope that it will be
40 // useful, but WITHOUT ANY WARRANTY; without even the implied warranty
41 // of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
42 // General Public License for more details. You should have received a
43 // copy of the GNU General Public License along with FOSA; see file
44 // COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,
45 // Cambridge, MA 02139, USA.
47 // As a special exception, including FOSA header files in a file,
48 // instantiating FOSA generics or templates, or linking other files
49 // with FOSA objects to produce an executable application, does not
50 // by itself cause the resulting executable application to be covered
51 // by the GNU General Public License. This exception does not
52 // however invalidate any other reasons why the executable file might be
53 // covered by the GNU Public License.
54 // -----------------------------------------------------------------------
62 #define TEST_SIGNAL (SIGRTMIN + 6)
68 fosa_abs_time_t past_time;
69 fosa_abs_time_t current_time;
70 fosa_timer_id_t timer;
72 fosa_signal_t signal_set[1];
73 fosa_signal_info_t signal_info;
74 fosa_signal_t signal_received;
76 int my_test_value = 42;
77 fosa_rel_time_t eat_time = fosa_msec_to_rel_time(2000);
81 /* We block the signals that we are going to process */
82 /*****************************************************/
83 signal_set[0] = TEST_SIGNAL;
84 terror = fosa_set_accepted_signals(signal_set, 1);
85 if (terror != 0) exit(1);
89 /* We create a timer based on the FOSA_CLOCK_REALTIME */
90 /******************************************************/
91 signal_info.sival_int = my_test_value;
92 terror = fosa_timer_create(FOSA_CLOCK_REALTIME, TEST_SIGNAL, signal_info, &timer);
93 if (terror != 0) exit(1);
95 /* I get the time BEFORE doing the eat */
96 /***************************************/
97 terror = fosa_clock_get_time(FOSA_CLOCK_REALTIME, &past_time);
98 if (terror != 0) exit(1);
99 printf("Current time: %ld msec\n", fosa_abs_time_to_msec(past_time) );
101 /* Now I do some work for some secs */
102 /************************************/
105 /* I read the time again */
106 /*************************/
107 terror = fosa_clock_get_time(FOSA_CLOCK_REALTIME, ¤t_time);
108 if (terror != 0) exit(1);
109 printf("Current time: %ld msec\n", fosa_abs_time_to_msec(current_time) );
111 /* I arm the timer to the past */
112 /* Since we have blocked this signal, the signal should be stored */
113 /******************************************************************/
114 printf("Arming the timer\n");
115 terror = fosa_abs_timer_arm(timer, &past_time);
118 /* Now I do the sigwait */
119 /************************/
120 printf("Waiting for the signal\n");
121 terror = fosa_signal_wait(signal_set, 1, &signal_received, &signal_info);
122 if (terror != 0) exit(1);
124 printf("Signal accepted!!!\n");