comparison VSs.h @ 21:feea343d202f

add support for more OmpSs features
author Nina Engelhardt <nengel@mailbox.tu-berlin.de>
date Mon, 29 Oct 2012 16:57:56 +0100
parents a7ca8f45c1c4
children b787a5234406
comparison
equal deleted inserted replaced
19:6d780619484f 20:ddd8fa5fc02e
90 bool32 isWaitingForChildTasksToEnd; 90 bool32 isWaitingForChildTasksToEnd;
91 bool32 isWaitingForChildThreadsToEnd; 91 bool32 isWaitingForChildThreadsToEnd;
92 bool32 isEnded; 92 bool32 isEnded;
93 #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC 93 #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC
94 Unit parentUnit; 94 Unit parentUnit;
95 Unit firstOfTask;
95 #endif 96 #endif
96 } 97 }
97 VSsTaskStub; 98 VSsTaskStub;
98 99
99 100
100 typedef struct 101 typedef struct
101 { 102 {
102 VSsTaskStub *taskStub; 103 VSsTaskStub *taskStub;
103 int32 argNum; 104 int32 argNum;
104 int32 isReader; 105 int32 isReader;
106 bool32 isSuspended;
105 } 107 }
106 VSsTaskStubCarrier; 108 VSsTaskStubCarrier;
107 109
108 110
109 /*Semantic layer-specific data sent inside a request from lib called in app 111 /*Semantic layer-specific data sent inside a request from lib called in app
128 #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC 130 #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC
129 Unit executingUnit; 131 Unit executingUnit;
130 #endif 132 #endif
131 } 133 }
132 VSsSingleton; 134 VSsSingleton;
135
136 typedef struct
137 {
138 int32 isOccupied;
139 PrivQueueStruc *waitQ;
140 #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC
141 Unit previous;
142 #endif
143 }
144 VSsCritical;
133 145
134 enum VSsReqType 146 enum VSsReqType
135 { 147 {
136 submit_task = 1, 148 submit_task = 1,
137 end_task, 149 end_task,
143 receive_type_to, 155 receive_type_to,
144 send_from_to, 156 send_from_to,
145 receive_from_to, 157 receive_from_to,
146 //=============================== 158 //===============================
147 taskwait, 159 taskwait,
160 taskwait_on,
161 critical_start,
162 critical_end,
148 malloc_req, 163 malloc_req,
149 free_req, 164 free_req,
150 singleton_fn_start, 165 singleton_fn_start,
151 singleton_fn_end, 166 singleton_fn_end,
152 singleton_data_start, 167 singleton_data_start,
184 199
185 PtrToAtomicFn fnToExecInMaster; 200 PtrToAtomicFn fnToExecInMaster;
186 void *dataForFn; 201 void *dataForFn;
187 202
188 int32 transID; 203 int32 transID;
204 int32 criticalID;
189 } 205 }
190 /* VSsSemReq */; 206 /* VSsSemReq */;
191 207
192 208
193 typedef struct 209 typedef struct
204 int32 primitiveStartTime; 220 int32 primitiveStartTime;
205 221
206 //fix limit on num with dynArray 222 //fix limit on num with dynArray
207 VSsSingleton fnSingletons[NUM_STRUCS_IN_SEM_ENV]; 223 VSsSingleton fnSingletons[NUM_STRUCS_IN_SEM_ENV];
208 VSsTrans transactionStrucs[NUM_STRUCS_IN_SEM_ENV]; 224 VSsTrans transactionStrucs[NUM_STRUCS_IN_SEM_ENV];
225 VSsCritical criticalSection[NUM_STRUCS_IN_SEM_ENV];
209 226
210 bool32 *coreIsDone; 227 bool32 *coreIsDone;
211 int32 numCoresDone; 228 int32 numCoresDone;
212 229
213 #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC 230 #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC
317 334
318 //========================= 335 //=========================
319 void 336 void
320 VSs__taskwait(SlaveVP *animSlv); 337 VSs__taskwait(SlaveVP *animSlv);
321 338
339 void
340 VSs__taskwait_on(SlaveVP *animSlv,void* ptr);
341
342 void
343 VSs__start_critical(SlaveVP *animSlv,int32 name);
344
345 void
346 VSs__end_critical(SlaveVP *animSlv,int32 name);
322 347
323 int32 * 348 int32 *
324 VSs__give_self_taskID( SlaveVP *animSlv ); 349 VSs__give_self_taskID( SlaveVP *animSlv );
325 350
326 void 351 void