-//----------------------------------------------------------------------
-// Copyright (C) 2006 - 2007 by the FRESCOR consortium:
+// -----------------------------------------------------------------------
+// Copyright (C) 2006 - 2008 FRESCOR consortium partners:
//
// Universidad de Cantabria, SPAIN
// University of York, UK
// Scuola Superiore Sant'Anna, ITALY
// Kaiserslautern University, GERMANY
-// Univ. Politecnica Valencia, SPAIN
+// Univ. Politécnica Valencia, SPAIN
// Czech Technical University in Prague, CZECH REPUBLIC
// ENEA SWEDEN
// Thales Communication S.A. FRANCE
// Rapita Systems Ltd UK
// Evidence ITALY
//
-// See http://www.frescor.org
+// See http://www.frescor.org for a link to partners' websites
//
-// The FRESCOR project (FP6/2005/IST/5-034026) is funded
+// 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.
// Universidad de Cantabria, SPAIN
// University of York, UK
//
-// This file is part of FOSA (Frsh Operating System Abstraction)
+// 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.
+// 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.
+// 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
//==============================================
/* Local jump */
/**************/
-#include "marte_non_local_jmp.h"
+#include "misc/marte_non_local_jmp.h"
#define FOSA_LONG_JUMP_CONTEXT_T_OPAQUE struct { \
marte_nonlocaljmp_context_t marte_context; \
}
+/* 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_ETIMEDOUT ETIMEDOUT
+/* Not found in search (non existing thread, thread_set...) */
+#define FOSA_ESRCH ESRCH
+#define FOSA_ENOTSUP ENOTSUP
+
#endif
/////////////////////// End of MARTE_OS /////////////////////////////
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 */
/***************/
#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>
-/* Time */
-/********/
-// typedef struct timespec fosa_rel_time_t;
-// typedef struct timespec fosa_abs_time_t;
+FOSA_CPP_BEGIN_DECLS
+
+/* Local Jump */
+/**************/
+typedef sigjmp_buf FOSA_LONG_JUMP_CONTEXT_T_OPAQUE;
/* Threads and signals */
#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
/* 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
-/////////////////////////////////// PARTIKLE ///////////////////////////////////////////
+///////////////////////////////// PARTIKLE /////////////////////////////////////
#if defined(PARTIKLE)
#include <pthread.h>
bool activated;
} FOSA_ADS_ACTIONS_T_OPAQUE;
-typedef unsigned long FOSA_LONG_JUMP_CONTEXT_T_OPAQUE [32];
typedef pthread_t FOSA_THREAD_ID_T_OPAQUE;
typedef pthread_attr_t FOSA_THREAD_ATTR_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
enum _fosa_signal_limits_e {
LONGJMP_FIRSTSIG = SIGRTMAX - LONGJMP_NSIG + 1,
FOSA_SIGNAL_MAX = LONGJMP_FIRSTSIG - 1,
- FOSA_SIGNAL_MIN = FOSA_SIGNAL_MAX,
+ FOSA_SIGNAL_MIN = SIGRTMIN,
+ FOSA_NULL_SIGNAL = -1,
};
FOSA_ENOMEM = ENOMEM,
};
+
#endif
-/////////////////////////////////// PARTIKLE END //////////////////////////////////////
+/////////////////////////////// PARTIKLE END //////////////////////////////////