1 // -----------------------------------------------------------------------
2 // Copyright (C) 2006 - 2007 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 FRSH API
36 // FRSH API is free software; you can redistribute it and/or modify
37 // it under the terms of the GNU General Public License as published by
38 // the Free Software Foundation; either version 2, or (at your option)
41 // FRSH API is distributed in the hope that it will be useful, but
42 // WITHOUT ANY WARRANTY; without even the implied warranty of
43 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
44 // General Public License for more details.
46 // You should have received a copy of the GNU General Public License
47 // distributed with FRSH API; see file COPYING. If not, write to the
48 // Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
51 // As a special exception, if you include this header file into source
52 // files to be compiled, this header file does not by itself cause
53 // the resulting executable to be covered by the GNU General Public
54 // License. This exception does not however invalidate any other
55 // reasons why the executable file might be covered by the GNU General
57 // -----------------------------------------------------------------------
59 //========================================================================================
60 // ******** ******* ******** ** ** ******** ****** ******** **********
61 // **///// /**////** **////// /** /** **///// /** ** **////// /** /**
62 // ** /** /** /** /** /** ** /** ** /** /** /**
63 // ******* /******* /********* /********** ******* /** ** /********* /**********
64 // **//// /**///** ////////** /**//////** **//// /** ** ////////** /**//////**
65 // ** /** //** /** /** /** ** /** ** /** /** /**
66 // ** /** //** ******** /** /** ** /** ** ******** /** /**
67 // // // // //////// // // // /******/ //////// // //
69 // FRSH(FRescor ScHeduler), pronounced "fresh" FOSA(Frescor Oper System Adaptation layer)
70 //========================================================================================
72 #ifndef FRSH_FOSA_OPAQUE_H_
73 #define FRSH_FOSA_OPAQUE_H_
76 * @file frsh_fosa_opaque.h
81 * \addtogroup frshfosa
87 /////////////////////MaRTE OS, RT_LINUX & AQuoSA //////////////////////
89 #if defined(MARTE_OS) || defined(RT_LINUX) || defined(AQuoSA)
100 pthread_t pthread_id;
103 } FOSA_THREAD_ID_T_OPAQUE;
105 #else /* !AQuoSA, MARTE_OS, RT_LINUX */
108 typedef pthread_t FOSA_THREAD_ID_T_OPAQUE;
110 //#define FOSA_MUTEX_T_OPAQUE pthread_mutex_t
111 #define FOSA_THREAD_ID_T_OPAQUE pthread_t
116 typedef pthread_attr_t FOSA_THREAD_ATTR_T_OPAQUE;
118 typedef int FOSA_SIGNAL_T_OPAQUE;
120 typedef pthread_mutex_t FOSA_MUTEX_T_OPAQUE;
122 // The minimum and maximum signal numbers that may be used by the FRSH
124 #define FOSA_SIGNAL_MIN SIGRTMIN
125 #define FOSA_SIGNAL_MAX SIGRTMIN+0
127 #define FOSA_NULL_SIGNAL 0
131 /* #include <error.h> */
133 /** Not enough memory available **/
134 #define FOSA_ENOMEM ENOMEM
136 /** Invalid parameter **/
137 #define FOSA_EINVAL EINVAL
139 /** Still pending information **/
140 #define FOSA_EAGAIN EAGAIN
142 /** FOSA ADS errors **/
143 #define FOSA_EREJECT EREJECT
144 #define FOSA_EMASKED -2
145 #define FOSA_EPOLICY -3
149 #endif /* MARTE_OS || RT_LINUX || AQuoSA */
151 //////////////////End of MaRTE OS, RT_LINUX & AQuoSA ///////////////////
153 ////////////////////////// VIRTUAL TIME //////////////////////////////////////
155 #if defined(VIRTUAL_TIME)
158 #define FOSA_THREAD_ID_T_OPAQUE vt_posix_process_t
160 #define FOSA_THREAD_ATTR_T_OPAQUE fosa_thread_attr_t
162 #define FOSA_SIGNAL_T_OPAQUE int
164 #define FOSA_MUTEX_T_OPAQUE fosa_mutex_t
166 // The minimum and maximum signal numbers that may be used by the FRSH
168 #define FOSA_SIGNAL_MIN 8
169 #define FOSA_SIGNAL_MAX 31
171 // the min. and max. priority a fosa thread can have
172 #define FOSA_PRIORITY_MAX VT_PRIORITY_MIN - 1
173 #define FOSA_PRIORITY_MIN VT_PRIORITY_MAX
175 #define FOSA_NULL_SIGNAL 0
177 /* FOSA Errors and return values*/
179 /** Invalid parameter **/
180 #define FOSA_EINVAL -1
182 /** Not enough memory available **/
183 #define FOSA_ENOMEM -2
185 /** Still pending information **/
186 #define FOSA_EAGAIN -3
188 /** Mutex not available **/
189 #define FOSA_EBUSY -4
191 /** Cond var timedout **/
192 #define FOSA_ETIMEDOUT -5
194 /** FOSA ADS errors **/
195 #define FOSA_EREJECT -6
196 #define FOSA_EMASKED -7
199 /** Sched policy not correct */
200 #define FOSA_EPOLICY -8
202 /** the value given by thread_id is not valid for ADS */
203 #define FOSA_ESRCH -9
205 /** retval if no action performed **/
206 #define FOSA_NO_ACTION 0
208 #endif /* VIRTUAL_TIME */
209 //////////////////////////End of VIRTUAL TIME ///////////////////////////////////
211 ////////////////////////// OSE //////////////////////////////////////
215 /* Put OSE dependent includes and defines here */
218 //////////////////////////End of OSE ////////////////////////////////////
220 ////////////////////////// DUMMY_OS //////////////////////////////////////
222 #if defined(DUMMY_OS)
224 /* With this define we make sure that we are truly POSIX and OSE */
225 /* independent at the FRSH code. */
226 /*****************************************************************/
228 #define FOSA_THREAD_ID_T_OPAQUE int
230 #define FOSA_THREAD_ATTR_T_OPAQUE int
232 #define FOSA_SIGNAL_T_OPAQUE int
234 #define FRSH_SIGNAL_INFO_T_OPAQUE int
236 #define FOSA_MUTEX_T_OPAQUE int
238 // The minimum and maximum signal numbers that may be used by the FRSH
240 #define FOSA_SIGNAL_MIN 42
241 #define FOSA_SIGNAL_MAX 42
243 #define FOSA_NULL_SIGNAL 0
247 /* #include <error.h> */
249 /** Not enough memory available **/
250 #define FOSA_ENOMEM -1
252 /** Invalid parameter **/
253 #define FOSA_EINVAL -2
255 /** Still pending information **/
256 #define FOSA_EAGAIN -3
258 /** FOSA ADS errors **/
259 #define FOSA_EREJECT -4
260 #define FOSA_EMASKED -5
262 #define FOSA_EPOLICY -6
265 //////////////////////////End of DUMMY_OS ////////////////////////////////////
272 #endif /* !FRSH_FOSA_OPAQUE_H_ */