]> rtime.felk.cvut.cz Git - frescor/frsh.git/blob - frsh_api/frsh_opaque_types.h
e778e5ca2ada6aec98e10dc4934e54c6e3a62ec7
[frescor/frsh.git] / frsh_api / frsh_opaque_types.h
1 // -----------------------------------------------------------------------
2 //  Copyright (C) 2006 - 2008 FRESCOR consortium partners:
3 //
4 //    Universidad de Cantabria,              SPAIN
5 //    University of York,                    UK
6 //    Scuola Superiore Sant'Anna,            ITALY
7 //    Kaiserslautern University,             GERMANY
8 //    Univ. Politécnica  Valencia,           SPAIN
9 //    Czech Technical University in Prague,  CZECH REPUBLIC
10 //    ENEA                                   SWEDEN
11 //    Thales Communication S.A.              FRANCE
12 //    Visual Tools S.A.                      SPAIN
13 //    Rapita Systems Ltd                     UK
14 //    Evidence                               ITALY
15 //
16 //    See http://www.frescor.org for a link to partners' websites
17 //
18 //           FRESCOR project (FP6/2005/IST/5-034026) is funded
19 //        in part by the European Union Sixth Framework Programme
20 //        The European Union is not liable of any use that may be
21 //        made of this code.
22 //
23 //
24 //  based on previous work (FSF) done in the FIRST project
25 //
26 //   Copyright (C) 2005  Mälardalen University, SWEDEN
27 //                       Scuola Superiore S.Anna, ITALY
28 //                       Universidad de Cantabria, SPAIN
29 //                       University of York, UK
30 //
31 //   FSF API web pages: http://marte.unican.es/fsf/docs
32 //                      http://shark.sssup.it/contrib/first/docs/
33 //
34 //   This file is part of FRSH_FORB (FRescor ScHeduler based on FORB)
35 //
36 //  FRSH is free software; you can redistribute it and/or modify it
37 //  under terms of the GNU General Public License as published by the
38 //  Free Software Foundation; either version 2, or (at your option) any
39 //  later version.  FRSH is distributed in the hope that it will be
40 //  useful, but WITHOUT ANY WARRANTY; without even the implied warranty
41 //  of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
42 //  General Public License for more details. You should have received a
43 //  copy of the GNU General Public License along with FRSH; see file
44 //  COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,
45 //  Cambridge, MA 02139, USA.
46 //
47 //  As a special exception, including FRSH header files in a file,
48 //  instantiating FRSH generics or templates, or linking other files
49 //  with FRSH objects to produce an executable application, does not
50 //  by itself cause the resulting executable application to be covered
51 //  by the GNU General Public License. This exception does not
52 //  however invalidate any other reasons why the executable file might be
53 //  covered by the GNU Public License.
54 // -----------------------------------------------------------------------
55 //frsh_opaque_types.h
56 //==============================================
57 //  ******** *******    ********  **      **
58 //  **///// /**////**  **//////  /**     /**
59 //  **      /**   /** /**        /**     /**
60 //  ******* /*******  /********* /**********
61 //  **////  /**///**  ////////** /**//////**
62 //  **      /**  //**        /** /**     /**
63 //  **      /**   //** ********  /**     /**
64 //  //       //     // ////////   //      // 
65 //
66 // FRSH(FRescor ScHeduler), pronounced "fresh"
67 //==============================================
68
69 // Implementation dependent definitions
70 #ifndef _FRSH_OPAQUE_TYPES_H_
71 #define _FRSH_OPAQUE_TYPES_H_
72
73 #include <fres_contract_type.h>
74 #include <fres_synchobj.h>
75 #include <frsh_cpp_macros.h>
76 #include <fres_error.h>
77
78 FRSH_CPP_BEGIN_DECLS
79
80 /// Mark that we are using different FRSH implementation
81 #define FRSH_FORB 1
82
83 /**
84  * @file frsh_opaque_types.h
85  **/
86
87 /**
88  * @defgroup opaque Opaque types
89  *
90  * This module specifies some #defines for privates types in the
91  * interface.  In this way we warn the FRSH user never to access the internal
92  * members of the types directly allowing us to change their internal
93  * definitions to suit our needs.
94  *
95  * Note that in Ada the FRSH user would never be allowed to access the
96  * members directly, however in C the compiler does not prevent this.
97  * But this is the best we can do in this language.
98  *
99  * @{
100  **/
101
102 struct fres_vres;
103 #define FRSH_VRES_ID_T_OPAQUE struct fres_vres *
104
105 /** frsh_contract_parameters_t **/
106 #define FRSH_CONTRACT_T_OPAQUE fres_contract_ptr
107
108
109 #define FRSH_SYNCHOBJ_HANDLE_T_OPAQUE struct fres_synchobj *
110
111 #define FRSH_SHAREDOBJ_HANDLE_T_OPAQUE struct fres_sharedobj *
112
113 typedef unsigned int FRSH_GROUP_ID_T_OPAQUE;
114
115 /**
116  * Critical section data
117  * - comon parameters
118  *     op_kind;     // kind of operation (READ or WRITE)
119  *     obj_handle;  // handle to shared object
120  *     wcet;        // Execution time
121  *     blocking;    // Blocking time (execution time + protection overheads)
122  * - attributes used only for protected shared objects
123  *     op;          // pointer to the operation
124  * - attributes used only for protected write operations
125  *     areas;       // memory areas to be protected
126  * 
127  **/
128 #define FRSH_CSECT_T_OPAQUE struct {    \
129   frsh_csect_op_kind_t op_kind;         \
130   frsh_sharedobj_label_t obj_label;     \
131   frsh_rel_time_t wcet;                 \
132   frsh_rel_time_t blocking;             \
133   frsh_csect_op_t op;                   \
134   frsh_memory_areas_t areas;            \
135 }
136
137 struct fna_endpoint_data;
138
139 //opaque types for frsh endpoints
140 typedef struct fna_endpoint_data* FRSH_SEND_ENDPOINT_T_OPAQUE;
141 typedef struct fna_endpoint_data* FRSH_RECEIVE_ENDPOINT_T_OPAQUE;
142
143 /*@}*/
144
145 FRSH_CPP_END_DECLS
146
147 #endif // _FRSH_OPAQUE_TYPES_H_