From 0c532ccf79817f2ce0c5c84ff2d05a467f46dd43 Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Mon, 31 Jan 2011 10:00:49 +0100 Subject: [PATCH] Split FOSA opaque types to multiple files based on platform name The aim of this is to have more readable code. As we are now focused mainly on Linux platform, we do not want to mistakenly find declarations for other platforms. --- include/Makefile.omk | 11 +- include/fosa_opaque_types.h | 536 ------------------------ include/fosa_opaque_types_linux.h | 173 ++++++++ include/fosa_opaque_types_marte.h | 181 ++++++++ include/fosa_opaque_types_partikle.h | 143 +++++++ include/fosa_opaque_types_rtlinux.h | 139 ++++++ include/fosa_opaque_types_virtualtime.h | 139 ++++++ 7 files changed, 785 insertions(+), 537 deletions(-) delete mode 100644 include/fosa_opaque_types.h create mode 100644 include/fosa_opaque_types_linux.h create mode 100644 include/fosa_opaque_types_marte.h create mode 100644 include/fosa_opaque_types_partikle.h create mode 100644 include/fosa_opaque_types_rtlinux.h create mode 100644 include/fosa_opaque_types_virtualtime.h diff --git a/include/Makefile.omk b/include/Makefile.omk index 9aa9efe..e4a552f 100644 --- a/include/Makefile.omk +++ b/include/Makefile.omk @@ -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/include/fosa_opaque_types.h b/include/fosa_opaque_types.h deleted file mode 100644 index 535c903..0000000 --- a/include/fosa_opaque_types.h +++ /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 - -#include "fosa_cpp_macros.h" -#include "fosa_opaque_types_time.h" - -/////////////////////// MARTE_OS ///////////////////////////// - -#ifdef MARTE_OS - -#include -#include -#include -#include -#include - -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 -#include -#include -#include -#include -#include - - -/* 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 -#include - -#ifndef _XOPEN_SOURCE -#define _XOPEN_SOURCE 500 -#endif -#ifndef __USE_UNIX98 -#define __USE_UNIX98 -#endif -#include - -#include -#include -#include -#include - -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 -#include -#include -#include -#include -#include -#include - -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 - -#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/include/fosa_opaque_types_linux.h b/include/fosa_opaque_types_linux.h new file mode 100644 index 0000000..8c13815 --- /dev/null +++ b/include/fosa_opaque_types_linux.h @@ -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 + +#include "fosa_cpp_macros.h" +#include "fosa_opaque_types_time.h" + +#include +#include + +#ifndef _XOPEN_SOURCE +#define _XOPEN_SOURCE 500 +#endif +#ifndef __USE_UNIX98 +#define __USE_UNIX98 +#endif +#include + +#include +#include +#include +#include + +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/include/fosa_opaque_types_marte.h b/include/fosa_opaque_types_marte.h new file mode 100644 index 0000000..9a6ea5d --- /dev/null +++ b/include/fosa_opaque_types_marte.h @@ -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 + +#include "fosa_cpp_macros.h" +#include "fosa_opaque_types_time.h" + +/////////////////////// MARTE_OS ///////////////////////////// + +#include +#include +#include +#include +#include + +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/include/fosa_opaque_types_partikle.h b/include/fosa_opaque_types_partikle.h new file mode 100644 index 0000000..f138751 --- /dev/null +++ b/include/fosa_opaque_types_partikle.h @@ -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 + +#include "fosa_cpp_macros.h" +#include "fosa_opaque_types_time.h" + +#include +#include +#include +#include +#include +#include +#include + +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/include/fosa_opaque_types_rtlinux.h b/include/fosa_opaque_types_rtlinux.h new file mode 100644 index 0000000..f5270be --- /dev/null +++ b/include/fosa_opaque_types_rtlinux.h @@ -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 + +#include "fosa_cpp_macros.h" +#include "fosa_opaque_types_time.h" + +/* Very similar to MARTE_OS but I leave separate for clarity */ + +#include +#include +#include +#include +#include +#include + + +/* 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/include/fosa_opaque_types_virtualtime.h b/include/fosa_opaque_types_virtualtime.h new file mode 100644 index 0000000..558607f --- /dev/null +++ b/include/fosa_opaque_types_virtualtime.h @@ -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 + +#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 + +#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_ -- 2.39.2