]> rtime.felk.cvut.cz Git - frescor/frsh.git/blob - frsh_api/frsh_opaque_types.h
disk_bfq: Manager updated to work correctly with contract cancelation
[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 /**
117  * Critical section runtime data
118  * - comon parameters
119  *     op_kind;     // kind of operation (READ or WRITE)
120  *     obj_label;   // label of the shared object
121  *     wcet;        // Execution time
122  *     blocking;    // Blocking time (execution time + protection overheads)
123  * 
124  **/
125 #define FRSH_CSECT_RUNTIME_T_OPAQUE struct {    \
126   frsh_csect_op_kind_t op_kind;                 \
127   frsh_sharedobj_label_t obj_label;             \
128   frsh_rel_time_t wcet;                         \
129   frsh_rel_time_t blocking;                     \
130 }
131
132 /**
133  * Critical section data
134  * - runtime parameters
135  *    runtime;      //
136  * - attributes used only for protected shared objects
137  *     op;          // pointer to the operation
138  * - attributes used only for protected write operations
139  *     areas;       // memory areas to be protected
140  *
141  **/
142 #define FRSH_CSECT_T_OPAQUE struct {    \
143   frsh_csect_op_kind_t op_kind;         \
144   frsh_sharedobj_label_t obj_label;     \
145   frsh_rel_time_t wcet;                 \
146   frsh_rel_time_t blocking;             \
147   frsh_csect_op_t op;                   \
148   frsh_memory_areas_t areas;            \
149 }
150
151 struct fna_endpoint_data;
152
153 //opaque types for frsh endpoints
154 typedef struct fna_endpoint_data* FRSH_SEND_ENDPOINT_T_OPAQUE;
155 typedef struct fna_endpoint_data* FRSH_RECEIVE_ENDPOINT_T_OPAQUE;
156
157 /*@}*/
158
159 FRSH_CPP_END_DECLS
160
161 #endif // _FRSH_OPAQUE_TYPES_H_