-include_HEADERS = $(notdir $(wildcard $(SOURCES_DIR)/*.h))
+include_HEADERS = fosa_app_def_sched.h fosa_clocks_and_timers.h \
+ fosa_configuration_parameters.h fosa_cpp_macros.h \
+ fosa_group_clocks.h fosa.h fosa_long_jump.h \
+ fosa_mutexes_and_condvars.h fosa_platform_values.h \
+ fosa_threads_and_signals.h fosa_time.h \
+ fosa_time_numeric.h fosa_time_timespec.h \
+ fosa_types.h
+
+renamed_include_HEADERS = fosa_opaque_types_$(PLATFORM_FN).h->fosa_opaque_types.h
+
+++ /dev/null
-// -----------------------------------------------------------------------
-// Copyright (C) 2006 - 2009 FRESCOR consortium partners:
-//
-// Universidad de Cantabria, SPAIN
-// University of York, UK
-// Scuola Superiore Sant'Anna, ITALY
-// Kaiserslautern University, GERMANY
-// Univ. Politécnica Valencia, SPAIN
-// Czech Technical University in Prague, CZECH REPUBLIC
-// ENEA SWEDEN
-// Thales Communication S.A. FRANCE
-// Visual Tools S.A. SPAIN
-// Rapita Systems Ltd UK
-// Evidence ITALY
-//
-// See http://www.frescor.org for a link to partners' websites
-//
-// FRESCOR project (FP6/2005/IST/5-034026) is funded
-// in part by the European Union Sixth Framework Programme
-// The European Union is not liable of any use that may be
-// made of this code.
-//
-//
-// based on previous work (FSF) done in the FIRST project
-//
-// Copyright (C) 2005 Mälardalen University, SWEDEN
-// Scuola Superiore S.Anna, ITALY
-// Universidad de Cantabria, SPAIN
-// University of York, UK
-//
-// FSF API web pages: http://marte.unican.es/fsf/docs
-// http://shark.sssup.it/contrib/first/docs/
-//
-// This file is part of FOSA (Frsh Operating System Adaption)
-//
-// FOSA is free software; you can redistribute it and/or modify it
-// under terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option) any
-// later version. FOSA is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details. You should have received a
-// copy of the GNU General Public License along with FOSA; see file
-// COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,
-// Cambridge, MA 02139, USA.
-//
-// As a special exception, including FOSA header files in a file,
-// instantiating FOSA generics or templates, or linking other files
-// with FOSA objects to produce an executable application, does not
-// by itself cause the resulting executable application to be covered
-// by the GNU General Public License. This exception does not
-// however invalidate any other reasons why the executable file might be
-// covered by the GNU Public License.
-// -----------------------------------------------------------------------
-//fosa_opaque_types.h
-//==============================================
-// ******** ****** ******** **********
-// **///// /** ** **////// /** /**
-// ** /** ** /** /** /**
-// ******* /** ** /********* /**********
-// **//// /** ** ////////** /**//////**
-// ** /** ** /** /** /**
-// ** /** ** ******** /** /**
-// // /******/ //////// // //
-//
-// FOSA(Frescor Operating System Adaptation layer)
-//================================================
-
-// Implementation dependent definitions
-
-#ifndef _FOSA_OPAQUE_TYPES_H_
-#define _FOSA_OPAQUE_TYPES_H_
-
-#include <stdbool.h>
-
-#include "fosa_cpp_macros.h"
-#include "fosa_opaque_types_time.h"
-
-/////////////////////// MARTE_OS /////////////////////////////
-
-#ifdef MARTE_OS
-
-#include <pthread.h>
-#include <signal.h>
-#include <time.h>
-#include <sched.h>
-#include <errno.h>
-
-FOSA_CPP_BEGIN_DECLS
-
-
-/* Thread and signals */
-/**********************/
-typedef pthread_t FOSA_THREAD_ID_T_OPAQUE;
-typedef pthread_attr_t FOSA_THREAD_ATTR_T_OPAQUE;
-
-typedef int FOSA_SIGNAL_T_OPAQUE;
-/* Signal info is defined as a union in thread_and_signals */
-
-#define FOSA_SIGNAL_MIN SIGRTMIN
-#define FOSA_SIGNAL_MAX SIGRTMIN+0
-
-#define FOSA_NULL_SIGNAL 0
-
-/* Clocks and timers */
-/**********************/
-typedef clockid_t FOSA_CLOCK_ID_T_OPAQUE;
-typedef timer_t FOSA_TIMER_ID_T_OPAQUE;
-
-#define FOSA_SYSTEM_CLOCK_OPAQUE CLOCK_MONOTONIC
-
-/* Mutex and conditional variables */
-/***********************************/
-typedef pthread_mutex_t FOSA_MUTEX_T_OPAQUE;
-typedef pthread_cond_t FOSA_COND_T_OPAQUE;
-
-
-/* Application defined Scheduling */
-/**********************************/
-#define FOSA_ADS_ACTIONS_T_OPAQUE struct \
-{ \
- posix_appsched_actions_t actions; \
- struct timespec *timeout_ptr; \
- struct timespec timeout; \
- bool rejected; \
- bool suspended; \
- bool activated; \
-}
-
-
-/* Local jump */
-/**************/
-#include "misc/marte_non_local_jmp.h"
-
-#define FOSA_LONG_JUMP_CONTEXT_T_OPAQUE struct { \
- marte_nonlocaljmp_context_t marte_context; \
- fosa_thread_id_t tid; \
-}
-
-
-/* Group clocks */
-/****************/
-typedef marte_thread_set_t FOSA_THREAD_SET_ID_T_OPAQUE;
-
-#define FOSA_NULL_THREAD_SET_ID_OPAQUE 0 /* In MaRTE-OS thread_set_t are
- * pointers */
-
-/* FOSA errors */
-/***************/
-/** Not enough memory available **/
-#define FOSA_ENOMEM ENOMEM
-
-/** Invalid parameter **/
-#define FOSA_EINVAL EINVAL
-
-/** Still pending information **/
-#define FOSA_EAGAIN EAGAIN
-
-/** FOSA ADS errors **/
-#ifdef MARTE_OS
-#define EREJECT 201 /* (for linux_lib_arch) Appsched has rejected object */
-#endif
-
-#define FOSA_EREJECT EREJECT
-#define FOSA_EMASKED -2
-#define FOSA_EPOLICY -3
-
-#define FOSA_ETIMEDOUT ETIMEDOUT
-
-/* Not found in search (non existing thread, thread_set...) */
-#define FOSA_ESRCH ESRCH
-#define FOSA_ENOTSUP ENOTSUP
-
-#endif
-
-/////////////////////// End of MARTE_OS /////////////////////////////
-
-
-/////////////////////// RT_LINUX ///////////////////////////
-
-#ifdef RT_LINUX
-
-/* Very similar to MARTE_OS but I leave separate for clarity */
-
-#include <pthread.h>
-#include <signal.h>
-#include <time.h>
-#include <sched.h>
-#include <errno.h>
-#include <rtl_timer.h>
-
-
-/* Threads and signals */
-/***********************/
-#define FOSA_THREAD_ID_T_OPAQUE pthread_t
-
-typedef pthread_attr_t FOSA_THREAD_ATTR_T_OPAQUE;
-typedef int FOSA_SIGNAL_T_OPAQUE;
-/* Signal info is defined as a union in fosa_types.h */
-
-// The minimum and maximum signal numbers that may be used by the FRSH
-// implementation
-#define FOSA_SIGNAL_MIN SIGRTMIN
-#define FOSA_SIGNAL_MAX SIGRTMIN+0
-#define FOSA_NULL_SIGNAL 0
-
-/* Clocks and timers */
-/*********************/
-#define FOSA_CLOCK_ID_T_OPAQUE clockid_t
-#define FOSA_TIMER_ID_T_OPAQUE timer_t
-#define FOSA_SYSTEM_CLOCK_OPAQUE CLOCK_MONOTONIC
-
-/* Mutex and cond vars */
-/***********************/
-typedef pthread_mutex_t FOSA_MUTEX_T_OPAQUE;
-#define FOSA_COND_T_OPAQUE pthread_cond_t
-
-/* Thread groups */
-/*****************/
-typedef int FOSA_THREAD_SET_ID_T_OPAQUE
-
-/* FOSA Errors */
-/***************/
-/** Not enough memory available **/
-#define FOSA_ENOMEM ENOMEM
-/** Invalid parameter **/
-#define FOSA_EINVAL EINVAL
-/** Still pending information **/
-#define FOSA_EAGAIN EAGAIN
-
-/** FOSA ADS errors **/
-#define FOSA_EREJECT EREJECT
-#define FOSA_EMASKED -2
-#define FOSA_EPOLICY -3
-
-#define FOSA_ETIMEDOUT ETIMEDOUT
-
-#endif
-
-/////////////////////// End of RT_LINUX /////////////////////////////
-
-
-////////////////////////// OSE //////////////////////////////////////
-
-#ifdef OSE
-
-
-
-/* Put OSE dependent includes and defines here */
-
-#endif /* OSE */
-
-
-
-/////////////////////// AQuoSA ///////////////////////////
-
-#ifdef AQuoSA
-
-#include <unistd.h>
-#include <linux/unistd.h>
-
-#ifndef _XOPEN_SOURCE
-#define _XOPEN_SOURCE 500
-#endif
-#ifndef __USE_UNIX98
-#define __USE_UNIX98
-#endif
-#include <pthread.h>
-
-#include <signal.h>
-#include <setjmp.h>
-#include <errno.h>
-#include <time.h>
-
-FOSA_CPP_BEGIN_DECLS
-
-/* Local Jump */
-/**************/
-typedef struct {
- sigjmp_buf setjmp_context;
- int setjmp_retvalue;
-} FOSA_LONG_JUMP_CONTEXT_T_OPAQUE;
-
-
-/* Threads and signals */
-/***********************/
-typedef struct {
- pthread_t pthread_id;
- pid_t linux_pid;
- pid_t linux_tid;
-} FOSA_THREAD_ID_T_OPAQUE;
-
-
-typedef pthread_attr_t FOSA_THREAD_ATTR_T_OPAQUE;
-typedef int FOSA_SIGNAL_T_OPAQUE;
-
-
-// The minimum and maximum signal numbers that may be used by the FRSH
-// implementation
-#define FOSA_SIGNAL_MIN SIGRTMIN
-#define FOSA_SIGNAL_MAX SIGRTMIN+0
-
-#define FOSA_NULL_SIGNAL 0
-
-
-/* Thread groups */
-/*****************/
-typedef int FOSA_THREAD_SET_ID_T_OPAQUE;
-
-/* Clocks and signals */
-/**********************/
-#define FOSA_CLOCK_ID_T_OPAQUE clockid_t
-#define FOSA_SYSTEM_CLOCK_OPAQUE CLOCK_MONOTONIC
-#define FOSA_TIMER_ID_T_OPAQUE timer_t
-
-
-
-/* Mutex and cond vars */
-/***********************/
-typedef pthread_mutex_t FOSA_MUTEX_T_OPAQUE;
-#define FOSA_COND_T_OPAQUE pthread_cond_t
-
-
-/* Application Defined Scheduling */
-/**********************************/
-/* hack to get AQuoSA sources compile without having none
- * of the application level scheduler header files and symbols */
-#define posix_appsched_actions_t int
-
-#define FOSA_ADS_ACTIONS_T_OPAQUE posix_appsched_actions_t
-
-
-/* FOSA Errors */
-
-/** Not enough memory available **/
-#define FOSA_ENOMEM ENOMEM
-
-/** Invalid parameter **/
-#define FOSA_EINVAL EINVAL
-
-/** Still pending information **/
-#define FOSA_EAGAIN EAGAIN
-
-#define FOSA_EREJECT EREJECT
-#define FOSA_EMASKED -2
-#define FOSA_EPOLICY -3
-
-#define FOSA_ETIMEDOUT ETIMEDOUT
-
-
-#endif
-////////////////// END of AQuoSA //////////////////////
-
-
-
-///////////////////////////////// PARTIKLE /////////////////////////////////////
-#if defined(PARTIKLE)
-
-#include <pthread.h>
-#include <signal.h>
-#include <time.h>
-#include <sched.h>
-#include <stdlib.h>
-#include <setjmp.h>
-#include <limits.h>
-
-typedef struct {
- posix_appsched_actions_t actions;
- struct timespec * timeout_ptr;
- struct timespec timeout;
- bool rejected;
- bool suspended;
- bool activated;
-} FOSA_ADS_ACTIONS_T_OPAQUE;
-
-
-typedef pthread_t FOSA_THREAD_ID_T_OPAQUE;
-typedef pthread_attr_t FOSA_THREAD_ATTR_T_OPAQUE;
-typedef int FOSA_SIGNAL_T_OPAQUE;
-typedef clockid_t FOSA_CLOCK_ID_T_OPAQUE;
-typedef timer_t FOSA_TIMER_ID_T_OPAQUE;
-typedef pthread_cond_t FOSA_COND_T_OPAQUE;
-typedef pthread_mutex_t FOSA_MUTEX_T_OPAQUE;
-typedef unsigned long FOSA_LONG_JUMP_CONTEXT_T_OPAQUE [32];
-typedef group_clock_t FOSA_THREAD_SET_ID_T_OPAQUE;
-
-#define FOSA_NULL_THREAD_SET_ID_OPAQUE 0x0;
-
-enum _fosa_clocks_e {
- FOSA_SYSTEM_CLOCK_OPAQUE = CLOCK_MONOTONIC
-};
-
-#define LONGJMP_NSIG 3
-
-#if LONGJMP_NSIG > (RTSIG_MAX - 1)
-# error LONGJMP_NSIG too big (LONGJMP_NSIG > RTSIG_MAX - 1)
-#endif
-
-enum _fosa_signal_limits_e {
- LONGJMP_FIRSTSIG = SIGRTMAX - LONGJMP_NSIG + 1,
- FOSA_SIGNAL_MAX = LONGJMP_FIRSTSIG - 1,
- FOSA_SIGNAL_MIN = SIGRTMIN,
- FOSA_NULL_SIGNAL = -1,
-};
-
-
-enum _fosa_errors_e {
- FOSA_EINVAL = EINVAL,
- FOSA_EAGAIN = EAGAIN,
- FOSA_EREJECT = EREJECT,
- FOSA_EMASKED = EMASKED,
- FOSA_EPOLICY = EPOLICY,
- FOSA_ETIMEDOUT = ETIMEDOUT,
- FOSA_ENOMEM = ENOMEM,
-};
-
-
-#endif
-/////////////////////////////// PARTIKLE END //////////////////////////////////
-
-
-
-////////////////////////// VIRTUAL TIME //////////////////////////////////////
-#ifdef VIRTUAL_TIME
-
-/* Time */
-/********/
-// typedef struct timespec fosa_rel_time_t;
-// typedef struct timespec fosa_abs_time_t;
-
-#include <fosa_vt.h>
-
-#define FOSA_THREAD_ID_T_OPAQUE vt_posix_process_t
-#define FOSA_THREAD_ATTR_T_OPAQUE fosa_thread_attr_t
-#define FOSA_SIGNAL_T_OPAQUE int
-
-#define FOSA_MUTEX_T_OPAQUE fosa_mutex_t
-
-// The minimum and maximum signal numbers that may be used by the FRSH
-// implementation
-#define FOSA_SIGNAL_MIN 8
-#define FOSA_SIGNAL_MAX 31
-
-// the min. and max. priority a fosa thread can have
-#define FOSA_PRIORITY_MAX VT_PRIORITY_MIN - 1
-#define FOSA_PRIORITY_MIN VT_PRIORITY_MAX
-
-#define FOSA_NULL_SIGNAL 0
-
-/* FOSA Errors and return values*/
-
-/** Invalid parameter **/
-#define FOSA_EINVAL -1
-
-/** Not enough memory available **/
-#define FOSA_ENOMEM -2
-
-/** Still pending information **/
-#define FOSA_EAGAIN -3
-
-/** Mutex not available **/
-#define FOSA_EBUSY -4
-
-/** Cond var timedout **/
-#define FOSA_ETIMEDOUT -5
-
-/** FOSA ADS errors **/
-#define FOSA_EREJECT -6
-#define FOSA_EMASKED -7
-
-
-/** Sched policy not correct */
-#define FOSA_EPOLICY -8
-
-/** the value given by thread_id is not valid for ADS */
-#define FOSA_ESRCH -9
-
-/** retval if no action performed **/
-#define FOSA_NO_ACTION 0
-
-#endif /* VIRTUAL_TIME */
-//////////////////////////End of VIRTUAL TIME ///////////////////////////////////
-
-
-////////////////////////// DUMMY_OS //////////////////////////////////////
-
-#if defined(DUMMY_OS)
-
-/* With this define we make sure that we are truly POSIX and OSE */
-/* independent at the FRSH code. */
-/*****************************************************************/
-
-/* Time */
-/********/
-// typedef struct timespec fosa_rel_time_t;
-// typedef struct timespec fosa_abs_time_t;
-
-/* Thread and signals */
-/**********************/
-typedef int FOSA_THREAD_ID_T_OPAQUE;
-typedef int FOSA_THREAD_ATTR_T_OPAQUE;
-
-typedef int FOSA_SIGNAL_T_OPAQUE;
-typedef int FOSA_SIGNAL_INFO_T_OPAQUE;
-
-/* Signal info is defined as a union in thread_and_signals */
-
-#define FOSA_SIGNAL_MIN 42
-#define FOSA_SIGNAL_MAX 44
-
-#define FOSA_NULL_SIGNAL 0
-
-/* Clocks and timers */
-/**********************/
-typedef int FOSA_CLOCK_ID_T_OPAQUE;
-typedef int FOSA_TIMER_ID_T_OPAQUE;
-
-#define FOSA_SYSTEM_CLOCK_OPAQUE 25
-
-/* Mutex and conditional variables */
-/***********************************/
-typedef int FOSA_MUTEX_T_OPAQUE;
-typedef int FOSA_COND_T_OPAQUE;
-
-/* Application defined Scheduling */
-/**********************************/
-#define FOSA_ADS_ACTIONS_T_OPAQUE int
-
-
-#endif /* DUMMY */
-//////////////////////////End of DUMMY_OS ////////////////////////////////////
-
-FOSA_CPP_END_DECLS
-
-
-#endif // _FOSA_OPAQUE_TYPES_H_
--- /dev/null
+// -----------------------------------------------------------------------
+// Copyright (C) 2006 - 2009 FRESCOR consortium partners:
+//
+// Universidad de Cantabria, SPAIN
+// University of York, UK
+// Scuola Superiore Sant'Anna, ITALY
+// Kaiserslautern University, GERMANY
+// Univ. Politécnica Valencia, SPAIN
+// Czech Technical University in Prague, CZECH REPUBLIC
+// ENEA SWEDEN
+// Thales Communication S.A. FRANCE
+// Visual Tools S.A. SPAIN
+// Rapita Systems Ltd UK
+// Evidence ITALY
+//
+// See http://www.frescor.org for a link to partners' websites
+//
+// FRESCOR project (FP6/2005/IST/5-034026) is funded
+// in part by the European Union Sixth Framework Programme
+// The European Union is not liable of any use that may be
+// made of this code.
+//
+//
+// based on previous work (FSF) done in the FIRST project
+//
+// Copyright (C) 2005 Mälardalen University, SWEDEN
+// Scuola Superiore S.Anna, ITALY
+// Universidad de Cantabria, SPAIN
+// University of York, UK
+//
+// FSF API web pages: http://marte.unican.es/fsf/docs
+// http://shark.sssup.it/contrib/first/docs/
+//
+// This file is part of FOSA (Frsh Operating System Adaption)
+//
+// FOSA is free software; you can redistribute it and/or modify it
+// under terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option) any
+// later version. FOSA is distributed in the hope that it will be
+// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details. You should have received a
+// copy of the GNU General Public License along with FOSA; see file
+// COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,
+// Cambridge, MA 02139, USA.
+//
+// As a special exception, including FOSA header files in a file,
+// instantiating FOSA generics or templates, or linking other files
+// with FOSA objects to produce an executable application, does not
+// by itself cause the resulting executable application to be covered
+// by the GNU General Public License. This exception does not
+// however invalidate any other reasons why the executable file might be
+// covered by the GNU Public License.
+// -----------------------------------------------------------------------
+//fosa_opaque_types.h
+//==============================================
+// ******** ****** ******** **********
+// **///// /** ** **////// /** /**
+// ** /** ** /** /** /**
+// ******* /** ** /********* /**********
+// **//// /** ** ////////** /**//////**
+// ** /** ** /** /** /**
+// ** /** ** ******** /** /**
+// // /******/ //////// // //
+//
+// FOSA(Frescor Operating System Adaptation layer)
+//================================================
+
+// Implementation dependent definitions
+
+#ifndef _FOSA_OPAQUE_TYPES_LINUX_H_
+#define _FOSA_OPAQUE_TYPES_LINUX_H_
+
+#include <stdbool.h>
+
+#include "fosa_cpp_macros.h"
+#include "fosa_opaque_types_time.h"
+
+#include <unistd.h>
+#include <linux/unistd.h>
+
+#ifndef _XOPEN_SOURCE
+#define _XOPEN_SOURCE 500
+#endif
+#ifndef __USE_UNIX98
+#define __USE_UNIX98
+#endif
+#include <pthread.h>
+
+#include <signal.h>
+#include <setjmp.h>
+#include <errno.h>
+#include <time.h>
+
+FOSA_CPP_BEGIN_DECLS
+
+/* Local Jump */
+/**************/
+typedef struct {
+ sigjmp_buf setjmp_context;
+ int setjmp_retvalue;
+} FOSA_LONG_JUMP_CONTEXT_T_OPAQUE;
+
+
+/* Threads and signals */
+/***********************/
+typedef struct {
+ pthread_t pthread_id;
+ pid_t linux_pid;
+ pid_t linux_tid;
+} FOSA_THREAD_ID_T_OPAQUE;
+
+
+typedef pthread_attr_t FOSA_THREAD_ATTR_T_OPAQUE;
+typedef int FOSA_SIGNAL_T_OPAQUE;
+
+
+// The minimum and maximum signal numbers that may be used by the FRSH
+// implementation
+#define FOSA_SIGNAL_MIN SIGRTMIN
+#define FOSA_SIGNAL_MAX SIGRTMIN+0
+
+#define FOSA_NULL_SIGNAL 0
+
+
+/* Thread groups */
+/*****************/
+typedef int FOSA_THREAD_SET_ID_T_OPAQUE;
+
+/* Clocks and signals */
+/**********************/
+#define FOSA_CLOCK_ID_T_OPAQUE clockid_t
+#define FOSA_SYSTEM_CLOCK_OPAQUE CLOCK_MONOTONIC
+#define FOSA_TIMER_ID_T_OPAQUE timer_t
+
+
+
+/* Mutex and cond vars */
+/***********************/
+typedef pthread_mutex_t FOSA_MUTEX_T_OPAQUE;
+#define FOSA_COND_T_OPAQUE pthread_cond_t
+
+
+/* Application Defined Scheduling */
+/**********************************/
+/* hack to get AQuoSA sources compile without having none
+ * of the application level scheduler header files and symbols */
+#define posix_appsched_actions_t int
+
+#define FOSA_ADS_ACTIONS_T_OPAQUE posix_appsched_actions_t
+
+
+/* FOSA Errors */
+
+/** Not enough memory available **/
+#define FOSA_ENOMEM ENOMEM
+
+/** Invalid parameter **/
+#define FOSA_EINVAL EINVAL
+
+/** Still pending information **/
+#define FOSA_EAGAIN EAGAIN
+
+#define FOSA_EREJECT EREJECT
+#define FOSA_EMASKED -2
+#define FOSA_EPOLICY -3
+
+#define FOSA_ETIMEDOUT ETIMEDOUT
+
+FOSA_CPP_END_DECLS
+
+
+#endif // _FOSA_OPAQUE_TYPES_LINUX_H__
--- /dev/null
+// -----------------------------------------------------------------------
+// Copyright (C) 2006 - 2009 FRESCOR consortium partners:
+//
+// Universidad de Cantabria, SPAIN
+// University of York, UK
+// Scuola Superiore Sant'Anna, ITALY
+// Kaiserslautern University, GERMANY
+// Univ. Politécnica Valencia, SPAIN
+// Czech Technical University in Prague, CZECH REPUBLIC
+// ENEA SWEDEN
+// Thales Communication S.A. FRANCE
+// Visual Tools S.A. SPAIN
+// Rapita Systems Ltd UK
+// Evidence ITALY
+//
+// See http://www.frescor.org for a link to partners' websites
+//
+// FRESCOR project (FP6/2005/IST/5-034026) is funded
+// in part by the European Union Sixth Framework Programme
+// The European Union is not liable of any use that may be
+// made of this code.
+//
+//
+// based on previous work (FSF) done in the FIRST project
+//
+// Copyright (C) 2005 Mälardalen University, SWEDEN
+// Scuola Superiore S.Anna, ITALY
+// Universidad de Cantabria, SPAIN
+// University of York, UK
+//
+// FSF API web pages: http://marte.unican.es/fsf/docs
+// http://shark.sssup.it/contrib/first/docs/
+//
+// This file is part of FOSA (Frsh Operating System Adaption)
+//
+// FOSA is free software; you can redistribute it and/or modify it
+// under terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option) any
+// later version. FOSA is distributed in the hope that it will be
+// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details. You should have received a
+// copy of the GNU General Public License along with FOSA; see file
+// COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,
+// Cambridge, MA 02139, USA.
+//
+// As a special exception, including FOSA header files in a file,
+// instantiating FOSA generics or templates, or linking other files
+// with FOSA objects to produce an executable application, does not
+// by itself cause the resulting executable application to be covered
+// by the GNU General Public License. This exception does not
+// however invalidate any other reasons why the executable file might be
+// covered by the GNU Public License.
+// -----------------------------------------------------------------------
+//fosa_opaque_types.h
+//==============================================
+// ******** ****** ******** **********
+// **///// /** ** **////// /** /**
+// ** /** ** /** /** /**
+// ******* /** ** /********* /**********
+// **//// /** ** ////////** /**//////**
+// ** /** ** /** /** /**
+// ** /** ** ******** /** /**
+// // /******/ //////// // //
+//
+// FOSA(Frescor Operating System Adaptation layer)
+//================================================
+
+// Implementation dependent definitions
+
+#ifndef _FOSA_OPAQUE_TYPES_H_
+#define _FOSA_OPAQUE_TYPES_H_
+
+#include <stdbool.h>
+
+#include "fosa_cpp_macros.h"
+#include "fosa_opaque_types_time.h"
+
+/////////////////////// MARTE_OS /////////////////////////////
+
+#include <pthread.h>
+#include <signal.h>
+#include <time.h>
+#include <sched.h>
+#include <errno.h>
+
+FOSA_CPP_BEGIN_DECLS
+
+
+/* Thread and signals */
+/**********************/
+typedef pthread_t FOSA_THREAD_ID_T_OPAQUE;
+typedef pthread_attr_t FOSA_THREAD_ATTR_T_OPAQUE;
+
+typedef int FOSA_SIGNAL_T_OPAQUE;
+/* Signal info is defined as a union in thread_and_signals */
+
+#define FOSA_SIGNAL_MIN SIGRTMIN
+#define FOSA_SIGNAL_MAX SIGRTMIN+0
+
+#define FOSA_NULL_SIGNAL 0
+
+/* Clocks and timers */
+/**********************/
+typedef clockid_t FOSA_CLOCK_ID_T_OPAQUE;
+typedef timer_t FOSA_TIMER_ID_T_OPAQUE;
+
+#define FOSA_SYSTEM_CLOCK_OPAQUE CLOCK_MONOTONIC
+
+/* Mutex and conditional variables */
+/***********************************/
+typedef pthread_mutex_t FOSA_MUTEX_T_OPAQUE;
+typedef pthread_cond_t FOSA_COND_T_OPAQUE;
+
+
+/* Application defined Scheduling */
+/**********************************/
+#define FOSA_ADS_ACTIONS_T_OPAQUE struct \
+{ \
+ posix_appsched_actions_t actions; \
+ struct timespec *timeout_ptr; \
+ struct timespec timeout; \
+ bool rejected; \
+ bool suspended; \
+ bool activated; \
+}
+
+
+/* Local jump */
+/**************/
+#include "misc/marte_non_local_jmp.h"
+
+#define FOSA_LONG_JUMP_CONTEXT_T_OPAQUE struct { \
+ marte_nonlocaljmp_context_t marte_context; \
+ fosa_thread_id_t tid; \
+}
+
+
+/* Group clocks */
+/****************/
+typedef marte_thread_set_t FOSA_THREAD_SET_ID_T_OPAQUE;
+
+#define FOSA_NULL_THREAD_SET_ID_OPAQUE 0 /* In MaRTE-OS thread_set_t are
+ * pointers */
+
+/* FOSA errors */
+/***************/
+/** Not enough memory available **/
+#define FOSA_ENOMEM ENOMEM
+
+/** Invalid parameter **/
+#define FOSA_EINVAL EINVAL
+
+/** Still pending information **/
+#define FOSA_EAGAIN EAGAIN
+
+/** FOSA ADS errors **/
+#ifdef MARTE_OS
+#define EREJECT 201 /* (for linux_lib_arch) Appsched has rejected object */
+#endif
+
+#define FOSA_EREJECT EREJECT
+#define FOSA_EMASKED -2
+#define FOSA_EPOLICY -3
+
+#define FOSA_ETIMEDOUT ETIMEDOUT
+
+/* Not found in search (non existing thread, thread_set...) */
+#define FOSA_ESRCH ESRCH
+#define FOSA_ENOTSUP ENOTSUP
+
+#endif
+
+/////////////////////// End of MARTE_OS /////////////////////////////
+
+
+
+FOSA_CPP_END_DECLS
+
+
+#endif // _FOSA_OPAQUE_TYPES_H_
--- /dev/null
+// -----------------------------------------------------------------------
+// Copyright (C) 2006 - 2009 FRESCOR consortium partners:
+//
+// Universidad de Cantabria, SPAIN
+// University of York, UK
+// Scuola Superiore Sant'Anna, ITALY
+// Kaiserslautern University, GERMANY
+// Univ. Politécnica Valencia, SPAIN
+// Czech Technical University in Prague, CZECH REPUBLIC
+// ENEA SWEDEN
+// Thales Communication S.A. FRANCE
+// Visual Tools S.A. SPAIN
+// Rapita Systems Ltd UK
+// Evidence ITALY
+//
+// See http://www.frescor.org for a link to partners' websites
+//
+// FRESCOR project (FP6/2005/IST/5-034026) is funded
+// in part by the European Union Sixth Framework Programme
+// The European Union is not liable of any use that may be
+// made of this code.
+//
+//
+// based on previous work (FSF) done in the FIRST project
+//
+// Copyright (C) 2005 Mälardalen University, SWEDEN
+// Scuola Superiore S.Anna, ITALY
+// Universidad de Cantabria, SPAIN
+// University of York, UK
+//
+// FSF API web pages: http://marte.unican.es/fsf/docs
+// http://shark.sssup.it/contrib/first/docs/
+//
+// This file is part of FOSA (Frsh Operating System Adaption)
+//
+// FOSA is free software; you can redistribute it and/or modify it
+// under terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option) any
+// later version. FOSA is distributed in the hope that it will be
+// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details. You should have received a
+// copy of the GNU General Public License along with FOSA; see file
+// COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,
+// Cambridge, MA 02139, USA.
+//
+// As a special exception, including FOSA header files in a file,
+// instantiating FOSA generics or templates, or linking other files
+// with FOSA objects to produce an executable application, does not
+// by itself cause the resulting executable application to be covered
+// by the GNU General Public License. This exception does not
+// however invalidate any other reasons why the executable file might be
+// covered by the GNU Public License.
+// -----------------------------------------------------------------------
+//fosa_opaque_types.h
+//==============================================
+// ******** ****** ******** **********
+// **///// /** ** **////// /** /**
+// ** /** ** /** /** /**
+// ******* /** ** /********* /**********
+// **//// /** ** ////////** /**//////**
+// ** /** ** /** /** /**
+// ** /** ** ******** /** /**
+// // /******/ //////// // //
+//
+// FOSA(Frescor Operating System Adaptation layer)
+//================================================
+
+// Implementation dependent definitions
+
+#ifndef _FOSA_OPAQUE_TYPES_H_
+#define _FOSA_OPAQUE_TYPES_H_
+
+#include <stdbool.h>
+
+#include "fosa_cpp_macros.h"
+#include "fosa_opaque_types_time.h"
+
+#include <pthread.h>
+#include <signal.h>
+#include <time.h>
+#include <sched.h>
+#include <stdlib.h>
+#include <setjmp.h>
+#include <limits.h>
+
+typedef struct {
+ posix_appsched_actions_t actions;
+ struct timespec * timeout_ptr;
+ struct timespec timeout;
+ bool rejected;
+ bool suspended;
+ bool activated;
+} FOSA_ADS_ACTIONS_T_OPAQUE;
+
+
+typedef pthread_t FOSA_THREAD_ID_T_OPAQUE;
+typedef pthread_attr_t FOSA_THREAD_ATTR_T_OPAQUE;
+typedef int FOSA_SIGNAL_T_OPAQUE;
+typedef clockid_t FOSA_CLOCK_ID_T_OPAQUE;
+typedef timer_t FOSA_TIMER_ID_T_OPAQUE;
+typedef pthread_cond_t FOSA_COND_T_OPAQUE;
+typedef pthread_mutex_t FOSA_MUTEX_T_OPAQUE;
+typedef unsigned long FOSA_LONG_JUMP_CONTEXT_T_OPAQUE [32];
+typedef group_clock_t FOSA_THREAD_SET_ID_T_OPAQUE;
+
+#define FOSA_NULL_THREAD_SET_ID_OPAQUE 0x0;
+
+enum _fosa_clocks_e {
+ FOSA_SYSTEM_CLOCK_OPAQUE = CLOCK_MONOTONIC
+};
+
+#define LONGJMP_NSIG 3
+
+#if LONGJMP_NSIG > (RTSIG_MAX - 1)
+# error LONGJMP_NSIG too big (LONGJMP_NSIG > RTSIG_MAX - 1)
+#endif
+
+enum _fosa_signal_limits_e {
+ LONGJMP_FIRSTSIG = SIGRTMAX - LONGJMP_NSIG + 1,
+ FOSA_SIGNAL_MAX = LONGJMP_FIRSTSIG - 1,
+ FOSA_SIGNAL_MIN = SIGRTMIN,
+ FOSA_NULL_SIGNAL = -1,
+};
+
+
+enum _fosa_errors_e {
+ FOSA_EINVAL = EINVAL,
+ FOSA_EAGAIN = EAGAIN,
+ FOSA_EREJECT = EREJECT,
+ FOSA_EMASKED = EMASKED,
+ FOSA_EPOLICY = EPOLICY,
+ FOSA_ETIMEDOUT = ETIMEDOUT,
+ FOSA_ENOMEM = ENOMEM,
+};
+
+
+#endif
+
+FOSA_CPP_END_DECLS
+
+
+#endif // _FOSA_OPAQUE_TYPES_H_
--- /dev/null
+// -----------------------------------------------------------------------
+// Copyright (C) 2006 - 2009 FRESCOR consortium partners:
+//
+// Universidad de Cantabria, SPAIN
+// University of York, UK
+// Scuola Superiore Sant'Anna, ITALY
+// Kaiserslautern University, GERMANY
+// Univ. Politécnica Valencia, SPAIN
+// Czech Technical University in Prague, CZECH REPUBLIC
+// ENEA SWEDEN
+// Thales Communication S.A. FRANCE
+// Visual Tools S.A. SPAIN
+// Rapita Systems Ltd UK
+// Evidence ITALY
+//
+// See http://www.frescor.org for a link to partners' websites
+//
+// FRESCOR project (FP6/2005/IST/5-034026) is funded
+// in part by the European Union Sixth Framework Programme
+// The European Union is not liable of any use that may be
+// made of this code.
+//
+//
+// based on previous work (FSF) done in the FIRST project
+//
+// Copyright (C) 2005 Mälardalen University, SWEDEN
+// Scuola Superiore S.Anna, ITALY
+// Universidad de Cantabria, SPAIN
+// University of York, UK
+//
+// FSF API web pages: http://marte.unican.es/fsf/docs
+// http://shark.sssup.it/contrib/first/docs/
+//
+// This file is part of FOSA (Frsh Operating System Adaption)
+//
+// FOSA is free software; you can redistribute it and/or modify it
+// under terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option) any
+// later version. FOSA is distributed in the hope that it will be
+// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details. You should have received a
+// copy of the GNU General Public License along with FOSA; see file
+// COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,
+// Cambridge, MA 02139, USA.
+//
+// As a special exception, including FOSA header files in a file,
+// instantiating FOSA generics or templates, or linking other files
+// with FOSA objects to produce an executable application, does not
+// by itself cause the resulting executable application to be covered
+// by the GNU General Public License. This exception does not
+// however invalidate any other reasons why the executable file might be
+// covered by the GNU Public License.
+// -----------------------------------------------------------------------
+//fosa_opaque_types.h
+//==============================================
+// ******** ****** ******** **********
+// **///// /** ** **////// /** /**
+// ** /** ** /** /** /**
+// ******* /** ** /********* /**********
+// **//// /** ** ////////** /**//////**
+// ** /** ** /** /** /**
+// ** /** ** ******** /** /**
+// // /******/ //////// // //
+//
+// FOSA(Frescor Operating System Adaptation layer)
+//================================================
+
+// Implementation dependent definitions
+
+#ifndef _FOSA_OPAQUE_TYPES_H_
+#define _FOSA_OPAQUE_TYPES_H_
+
+#include <stdbool.h>
+
+#include "fosa_cpp_macros.h"
+#include "fosa_opaque_types_time.h"
+
+/* Very similar to MARTE_OS but I leave separate for clarity */
+
+#include <pthread.h>
+#include <signal.h>
+#include <time.h>
+#include <sched.h>
+#include <errno.h>
+#include <rtl_timer.h>
+
+
+/* Threads and signals */
+/***********************/
+#define FOSA_THREAD_ID_T_OPAQUE pthread_t
+
+typedef pthread_attr_t FOSA_THREAD_ATTR_T_OPAQUE;
+typedef int FOSA_SIGNAL_T_OPAQUE;
+/* Signal info is defined as a union in fosa_types.h */
+
+// The minimum and maximum signal numbers that may be used by the FRSH
+// implementation
+#define FOSA_SIGNAL_MIN SIGRTMIN
+#define FOSA_SIGNAL_MAX SIGRTMIN+0
+#define FOSA_NULL_SIGNAL 0
+
+/* Clocks and timers */
+/*********************/
+#define FOSA_CLOCK_ID_T_OPAQUE clockid_t
+#define FOSA_TIMER_ID_T_OPAQUE timer_t
+#define FOSA_SYSTEM_CLOCK_OPAQUE CLOCK_MONOTONIC
+
+/* Mutex and cond vars */
+/***********************/
+typedef pthread_mutex_t FOSA_MUTEX_T_OPAQUE;
+#define FOSA_COND_T_OPAQUE pthread_cond_t
+
+/* Thread groups */
+/*****************/
+typedef int FOSA_THREAD_SET_ID_T_OPAQUE
+
+/* FOSA Errors */
+/***************/
+/** Not enough memory available **/
+#define FOSA_ENOMEM ENOMEM
+/** Invalid parameter **/
+#define FOSA_EINVAL EINVAL
+/** Still pending information **/
+#define FOSA_EAGAIN EAGAIN
+
+/** FOSA ADS errors **/
+#define FOSA_EREJECT EREJECT
+#define FOSA_EMASKED -2
+#define FOSA_EPOLICY -3
+
+#define FOSA_ETIMEDOUT ETIMEDOUT
+
+#endif
+
+FOSA_CPP_END_DECLS
+
+
+#endif // _FOSA_OPAQUE_TYPES_H_
--- /dev/null
+// -----------------------------------------------------------------------
+// Copyright (C) 2006 - 2009 FRESCOR consortium partners:
+//
+// Universidad de Cantabria, SPAIN
+// University of York, UK
+// Scuola Superiore Sant'Anna, ITALY
+// Kaiserslautern University, GERMANY
+// Univ. Politécnica Valencia, SPAIN
+// Czech Technical University in Prague, CZECH REPUBLIC
+// ENEA SWEDEN
+// Thales Communication S.A. FRANCE
+// Visual Tools S.A. SPAIN
+// Rapita Systems Ltd UK
+// Evidence ITALY
+//
+// See http://www.frescor.org for a link to partners' websites
+//
+// FRESCOR project (FP6/2005/IST/5-034026) is funded
+// in part by the European Union Sixth Framework Programme
+// The European Union is not liable of any use that may be
+// made of this code.
+//
+//
+// based on previous work (FSF) done in the FIRST project
+//
+// Copyright (C) 2005 Mälardalen University, SWEDEN
+// Scuola Superiore S.Anna, ITALY
+// Universidad de Cantabria, SPAIN
+// University of York, UK
+//
+// FSF API web pages: http://marte.unican.es/fsf/docs
+// http://shark.sssup.it/contrib/first/docs/
+//
+// This file is part of FOSA (Frsh Operating System Adaption)
+//
+// FOSA is free software; you can redistribute it and/or modify it
+// under terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option) any
+// later version. FOSA is distributed in the hope that it will be
+// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details. You should have received a
+// copy of the GNU General Public License along with FOSA; see file
+// COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,
+// Cambridge, MA 02139, USA.
+//
+// As a special exception, including FOSA header files in a file,
+// instantiating FOSA generics or templates, or linking other files
+// with FOSA objects to produce an executable application, does not
+// by itself cause the resulting executable application to be covered
+// by the GNU General Public License. This exception does not
+// however invalidate any other reasons why the executable file might be
+// covered by the GNU Public License.
+// -----------------------------------------------------------------------
+//fosa_opaque_types.h
+//==============================================
+// ******** ****** ******** **********
+// **///// /** ** **////// /** /**
+// ** /** ** /** /** /**
+// ******* /** ** /********* /**********
+// **//// /** ** ////////** /**//////**
+// ** /** ** /** /** /**
+// ** /** ** ******** /** /**
+// // /******/ //////// // //
+//
+// FOSA(Frescor Operating System Adaptation layer)
+//================================================
+
+// Implementation dependent definitions
+
+#ifndef _FOSA_OPAQUE_TYPES_H_
+#define _FOSA_OPAQUE_TYPES_H_
+
+#include <stdbool.h>
+
+#include "fosa_cpp_macros.h"
+#include "fosa_opaque_types_time.h"
+
+/* Time */
+/********/
+// typedef struct timespec fosa_rel_time_t;
+// typedef struct timespec fosa_abs_time_t;
+
+#include <fosa_vt.h>
+
+#define FOSA_THREAD_ID_T_OPAQUE vt_posix_process_t
+#define FOSA_THREAD_ATTR_T_OPAQUE fosa_thread_attr_t
+#define FOSA_SIGNAL_T_OPAQUE int
+
+#define FOSA_MUTEX_T_OPAQUE fosa_mutex_t
+
+// The minimum and maximum signal numbers that may be used by the FRSH
+// implementation
+#define FOSA_SIGNAL_MIN 8
+#define FOSA_SIGNAL_MAX 31
+
+// the min. and max. priority a fosa thread can have
+#define FOSA_PRIORITY_MAX VT_PRIORITY_MIN - 1
+#define FOSA_PRIORITY_MIN VT_PRIORITY_MAX
+
+#define FOSA_NULL_SIGNAL 0
+
+/* FOSA Errors and return values*/
+
+/** Invalid parameter **/
+#define FOSA_EINVAL -1
+
+/** Not enough memory available **/
+#define FOSA_ENOMEM -2
+
+/** Still pending information **/
+#define FOSA_EAGAIN -3
+
+/** Mutex not available **/
+#define FOSA_EBUSY -4
+
+/** Cond var timedout **/
+#define FOSA_ETIMEDOUT -5
+
+/** FOSA ADS errors **/
+#define FOSA_EREJECT -6
+#define FOSA_EMASKED -7
+
+
+/** Sched policy not correct */
+#define FOSA_EPOLICY -8
+
+/** the value given by thread_id is not valid for ADS */
+#define FOSA_ESRCH -9
+
+/** retval if no action performed **/
+#define FOSA_NO_ACTION 0
+
+#endif /* VIRTUAL_TIME */
+
+FOSA_CPP_END_DECLS
+
+
+#endif // _FOSA_OPAQUE_TYPES_H_