+++ /dev/null
-//----------------------------------------------------------------------
-// Copyright (C) 2006 - 2007 by the FRESCOR consortium:
-//
-// Universidad de Cantabria, SPAIN
-// University of York, UK
-// Scuola Superiore Sant'Anna, ITALY
-// Kaiserslautern University, GERMANY
-// Univ. Politecnica 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
-//
-// The 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
-//
-// This file is part of FOSA (Frsh Operating System Abstraction)
-//
-// 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"
-
-/////////////////////// MARTE_OS /////////////////////////////
-
-#ifdef MARTE_OS
-
-#include <pthread.h>
-#include <signal.h>
-#include <time.h>
-#include <sched.h>
-#include <errno.h>
-
-FOSA_CPP_BEGIN_DECLS
-
-/* Time */
-/********/
-// typedef struct timespec fosa_rel_time_t;
-// typedef struct timespec fosa_abs_time_t;
-
-/* 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 */
-/**********************************/
-typedef struct {
- posix_appsched_actions_t actions;
- struct timespec *timeout_ptr;
- struct timespec timeout;
- bool rejected;
- bool suspended;
- bool activated;
-} fosa_ads_actions_internal_t;
-
-#define FOSA_ADS_ACTIONS_T_OPAQUE fosa_ads_actions_internal_t
-
-/* Local jump */
-/**************/
-#include "marte_non_local_jmp.h"
-
-#define FOSA_LONG_JUMP_CONTEXT_T_OPAQUE struct { \
- marte_nonlocaljmp_context_t marte_context; \
- fosa_thread_id_t tid; \
-}
-
-
-/* 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
-
-#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>
-
-/* Time */
-/********/
-// typedef struct timespec fosa_rel_time_t;
-// typedef struct timespec fosa_abs_time_t;
-
-
-/* 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
-
-
-/* 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
-
-/* Time */
-/********/
-// typedef struct timespec fosa_rel_time_t;
-// typedef struct timespec fosa_abs_time_t;
-
-
-/* Put OSE dependent includes and defines here */
-
-#endif /* OSE */
-
-
-
-/////////////////////// AQuoSA ///////////////////////////
-
-#ifdef AQuoSA
-
-#define __USE_UNIX98
-
-#include <pthread.h>
-#include <signal.h>
-#include <errno.h>
-#include <time.h>
-
-/* Time */
-/********/
-// typedef struct timespec fosa_rel_time_t;
-// typedef struct timespec fosa_abs_time_t;
-
-
-/* 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
-
-
-/* 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_LONG_JUMP_CONTEXT_T_OPAQUE 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>
-
-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 struct {
- jmp_buf jmp_context;
- bool jmp_hasexecuted;
- sigset_t jmp_sigmask;
-} FOSA_LONG_JUMP_CONTEXT_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;
-
-
-
-enum _fosa_clocks_e {
- FOSA_SYSTEM_CLOCK_OPAQUE = CLOCK_MONOTONIC
-};
-
-enum _fosa_signal_limits_e {
- LONGJMP_NSIG = 3,
- LONGJMP_FIRSTSIG = SIGRTMAX - LONGJMP_NSIG + 1,
- FOSA_SIGNAL_MAX = LONGJMP_FIRSTSIG - 1,
- FOSA_SIGNAL_MIN = FOSA_SIGNAL_MAX,
-};
-
-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_