]> rtime.felk.cvut.cz Git - frescor/frsh-forb.git/commitdiff
Merge branch 'master' of rtime.felk.cvut.cz:/frescor/frsh-forb
authorPetr Benes <benesp16@fel.cvut.cz>
Tue, 8 Feb 2011 13:53:32 +0000 (14:53 +0100)
committerPetr Benes <benesp16@fel.cvut.cz>
Tue, 8 Feb 2011 13:53:32 +0000 (14:53 +0100)
build/aquosa/config.target
src/forb/src/forb.h
src/fosa/include/Makefile.omk
src/fosa/include/fosa_opaque_types.h [deleted file]
src/fosa/include/fosa_opaque_types_linux.h [new file with mode: 0644]
src/fosa/include/fosa_opaque_types_marte.h [new file with mode: 0644]
src/fosa/include/fosa_opaque_types_partikle.h [new file with mode: 0644]
src/fosa/include/fosa_opaque_types_rtlinux.h [new file with mode: 0644]
src/fosa/include/fosa_opaque_types_virtualtime.h [new file with mode: 0644]

index 864d30ed39fbbad1722ac3fd7add995389e13bdc..ac2d70d6c403b9f72edc01d850e1471716ba4970 100644 (file)
@@ -1,4 +1,4 @@
-# -*- makefile -*-
+# -*- makefile-gmake -*-
 # Config file for compilation by OMK for AQuoSA/Linux OS target
 
 # You can override these variables in config.omk
@@ -8,7 +8,10 @@ QTDIR ?= $(wildcard /usr/share/qt4)
 test: wvtest
 .PHONY: test
 
+# Platform name as preprocessor symbol
 export PLATFORM=AQuoSA
+# Platform name as used in file names
+export PLATFORM_FN=linux
 
 # Create symbolic links to headers instead of copying them. Useful
 # during development.
index 9e26590d4e201c4c4769a2bdaf7fdda62504361c..f742d50e96451e2ef23943ec46fe7eb7a1eedb06 100644 (file)
@@ -168,8 +168,10 @@ typedef struct forb_init_attr {
  * Initializes FORB. This function has to be called before any other
  * FORB function.
  * 
- * Any command line arguments used by FORB are removed from the array
- * and @a argc and @a argv are updated accordingly.
+ * Any command line arguments used by FORB are removed from the @a
+ * argv array and @a argc is updated accordingly.
+ *
+ * @note Currently, no command line arguments are used by FORB.
  * 
  * @param argc a pointer to the number of command line arguments.
  * @param argv a pointer to the array of command line arguments.
index 9aa9efeec31f427240988465d9ce35ada83cdedf..e4a552f1c1bdee54ad633f7d892b04c896eae4e0 100644 (file)
@@ -1 +1,10 @@
-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
+
diff --git a/src/fosa/include/fosa_opaque_types.h b/src/fosa/include/fosa_opaque_types.h
deleted file mode 100644 (file)
index 535c903..0000000
+++ /dev/null
@@ -1,536 +0,0 @@
-// -----------------------------------------------------------------------
-//  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_
diff --git a/src/fosa/include/fosa_opaque_types_linux.h b/src/fosa/include/fosa_opaque_types_linux.h
new file mode 100644 (file)
index 0000000..8c13815
--- /dev/null
@@ -0,0 +1,173 @@
+// -----------------------------------------------------------------------
+//  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__
diff --git a/src/fosa/include/fosa_opaque_types_marte.h b/src/fosa/include/fosa_opaque_types_marte.h
new file mode 100644 (file)
index 0000000..9a6ea5d
--- /dev/null
@@ -0,0 +1,181 @@
+// -----------------------------------------------------------------------
+//  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_
diff --git a/src/fosa/include/fosa_opaque_types_partikle.h b/src/fosa/include/fosa_opaque_types_partikle.h
new file mode 100644 (file)
index 0000000..f138751
--- /dev/null
@@ -0,0 +1,143 @@
+// -----------------------------------------------------------------------
+//  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_
diff --git a/src/fosa/include/fosa_opaque_types_rtlinux.h b/src/fosa/include/fosa_opaque_types_rtlinux.h
new file mode 100644 (file)
index 0000000..f5270be
--- /dev/null
@@ -0,0 +1,139 @@
+// -----------------------------------------------------------------------
+//  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_
diff --git a/src/fosa/include/fosa_opaque_types_virtualtime.h b/src/fosa/include/fosa_opaque_types_virtualtime.h
new file mode 100644 (file)
index 0000000..558607f
--- /dev/null
@@ -0,0 +1,139 @@
+// -----------------------------------------------------------------------
+//  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_