]> rtime.felk.cvut.cz Git - frescor/fosa.git/blob - src_marte/tests/test_queue_signal_fosa/test_queue_signal_fosa.c
5751f4c7bd4c9aa3a35156962e961473768813d6
[frescor/fosa.git] / src_marte / tests / test_queue_signal_fosa / test_queue_signal_fosa.c
1 // -----------------------------------------------------------------------
2 //  Copyright (C) 2006 - 2008 FRESCOR consortium partners:
3 //
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
10 //    ENEA                                   SWEDEN
11 //    Thales Communication S.A.              FRANCE
12 //    Visual Tools S.A.                      SPAIN
13 //    Rapita Systems Ltd                     UK
14 //    Evidence                               ITALY
15 //
16 //    See http://www.frescor.org for a link to partners' websites
17 //
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
21 //        made of this code.
22 //
23 //
24 //  based on previous work (FSF) done in the FIRST project
25 //
26 //   Copyright (C) 2005  Mälardalen University, SWEDEN
27 //                       Scuola Superiore S.Anna, ITALY
28 //                       Universidad de Cantabria, SPAIN
29 //                       University of York, UK
30 //
31 //   FSF API web pages: http://marte.unican.es/fsf/docs
32 //                      http://shark.sssup.it/contrib/first/docs/
33 //
34 //   This file is part of FOSA (Frsh Operating System Adaption)
35 //
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.
46 //
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 // -----------------------------------------------------------------------
55
56 #include <stdio.h>
57 #include <string.h>
58 #include <stdlib.h>
59
60 #include "fosa.h"
61
62 #define TEST_SIGNAL (SIGRTMIN + 6)
63
64 int main()
65 {
66     int terror = -1;
67
68     fosa_abs_time_t past_time;
69     fosa_abs_time_t current_time;
70     fosa_timer_id_t timer;
71
72     fosa_signal_t signal_set[1];
73     fosa_signal_info_t signal_info;
74     fosa_signal_t signal_received;
75
76     int my_test_value = 42;
77     fosa_rel_time_t eat_time = fosa_msec_to_rel_time(2000);
78
79
80
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);
86
87
88
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);
94
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) );
100
101     /* Now I do some work for some secs */
102     /************************************/
103     fosa_eat(&eat_time);
104
105     /* I read the time again */
106     /*************************/
107     terror = fosa_clock_get_time(FOSA_CLOCK_REALTIME, &current_time);
108     if (terror != 0) exit(1);
109     printf("Current time:  %ld msec\n", fosa_abs_time_to_msec(current_time) );
110
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);
116
117
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);
123
124     printf("Signal accepted!!!\n");
125
126     return 0;
127 }