]> rtime.felk.cvut.cz Git - frescor/fosa.git/blobdiff - include/fosa_opaque_types.h
Adding FOSA thread groups
[frescor/fosa.git] / include / fosa_opaque_types.h
index bf2ee76cb093b28bb7ef62a8c401837e3d85a795..a658d5e2e88dad89ec5432efb22e696775b5b86f 100644 (file)
@@ -1,11 +1,11 @@
-//----------------------------------------------------------------------
-//  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
@@ -13,9 +13,9 @@
 //    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
 //==============================================
@@ -135,6 +138,13 @@ typedef pthread_cond_t FOSA_COND_T_OPAQUE;
 }
 
 
+/* Thread groups */
+/*****************/
+typedef marte_thread_set_t FOSA_THREAD_GROUP_ID_T_OPAQUE;
+
+#define FOSA_NULL_THREAD_GROUP_ID_OPAQUE 0 /* In MaRTE-OS thread_set_t are
+                                     * pointers */
+
 /* FOSA errors */
 /***************/
 /** Not enough memory available **/
@@ -157,6 +167,10 @@ typedef pthread_cond_t FOSA_COND_T_OPAQUE;
 
 #define FOSA_ETIMEDOUT ETIMEDOUT
 
+/* Not found in search (non existing thread, thread_group...) */
+#define FOSA_ESRCH   ESRCH
+#define FOSA_ENOTSUP ENOTSUP
+
 #endif
 
 ///////////////////////  End of MARTE_OS  /////////////////////////////
@@ -201,6 +215,9 @@ typedef int FOSA_SIGNAL_T_OPAQUE;
 typedef pthread_mutex_t FOSA_MUTEX_T_OPAQUE;
 #define    FOSA_COND_T_OPAQUE        pthread_cond_t
 
+/* Thread groups */
+/*****************/
+typedef int FOSA_THREAD_GROUP_ID_T_OPAQUE
 
 /* FOSA Errors */
 /***************/
@@ -333,6 +350,7 @@ typedef pthread_mutex_t FOSA_MUTEX_T_OPAQUE;
 #include <sched.h>
 #include <stdlib.h>
 #include <setjmp.h>
+#include <limits.h>
 
 typedef struct {
     posix_appsched_actions_t actions;
@@ -343,11 +361,7 @@ typedef struct {
     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 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;
@@ -363,13 +377,19 @@ 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_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,
@@ -380,6 +400,9 @@ enum _fosa_errors_e {
   FOSA_ENOMEM = ENOMEM,
 };
 
+
+
+
 #endif
 /////////////////////////////////// PARTIKLE  END //////////////////////////////////////