comparison VMS.h @ 127:24466227d8bb

bugs fixed, code is now compiling
author Merten Sach <msach@mailbox.tu-berlin.de>
date Wed, 07 Sep 2011 17:45:05 +0200
parents d4c881c7f03a
children dbfc8382d546
comparison
equal deleted inserted replaced
54:1ecbcb5e6626 55:0499200fe588
111 //=========================================================================== 111 //===========================================================================
112 typedef unsigned long long TSCount; 112 typedef unsigned long long TSCount;
113 113
114 typedef struct _SchedSlot SchedSlot; 114 typedef struct _SchedSlot SchedSlot;
115 typedef struct _VMSReqst VMSReqst; 115 typedef struct _VMSReqst VMSReqst;
116 typedef struct _VirtProcr VirtProcr;
116 typedef struct _InterMasterReqst InterMasterReqst; 117 typedef struct _InterMasterReqst InterMasterReqst;
117 typedef struct _IntervalProbe IntervalProbe; 118 typedef struct _IntervalProbe IntervalProbe;
118 typedef struct _GateStruc GateStruc; 119 typedef struct _GateStruc GateStruc;
119 120
120 121
187 enum InterVMSCoreReqType 188 enum InterVMSCoreReqType
188 { 189 {
189 transfer_free_ptr = 1 //avoid starting enums at 0, for debug reasons 190 transfer_free_ptr = 1 //avoid starting enums at 0, for debug reasons
190 }; 191 };
191 192
192 typedef struct //Doing a trick to save space & time -- allocate space 193 //Doing a trick to save space & time -- allocate space
193 { // for this, cast first as InterMaster then as this 194 // for this, cast first as InterMaster then as this
195 typedef struct
196 {
194 enum InterMasterReqstType reqType; //duplicate InterMasterReqst at top 197 enum InterMasterReqstType reqType; //duplicate InterMasterReqst at top
195 InterMasterReqst *nextReqst; 198 InterMasterReqst *nextReqst;
196 199
197 enum InterVMSCoreReqType secondReqType; 200 enum InterVMSCoreReqType secondReqType;
198 void *freePtr; //pile up fields, add as needed 201 void *freePtr; //pile up fields, add as needed
199 } 202 } InterVMSCoreReqst;
200 InterVMSCoreReqst;
201
202 203
203 //This is for requests between plugins on different cores 204 //This is for requests between plugins on different cores
204 // Here, after casting, the pluginReq is extracted and handed to plugin 205 // Here, after casting, the pluginReq is extracted and handed to plugin
205 typedef struct //Doing a trick to save space & time -- allocate space 206 //Doing a trick to save space & time -- allocate space
206 { // for this, cast first as InterMaster then as this 207 // for this, cast first as InterMaster then as this
208 typedef struct
209 {
207 enum InterMasterReqstType reqType; //copy InterMasterReqst at top 210 enum InterMasterReqstType reqType; //copy InterMasterReqst at top
208 InterMasterReqst *nextReqst; 211 InterMasterReqst *nextReqst;
209 212
210 void *pluginReq; //plugin will cast to approp type 213 void *pluginReq; //plugin will cast to approp type
211 } 214 } InterPluginReqst;
212 InterPluginReqst;
213
214 215
215 //==================== Core data structures =================== 216 //==================== Core data structures ===================
216 217
217 struct _SchedSlot 218 struct _SchedSlot
218 { 219 {
268 { 269 {
269 SlaveScheduler slaveScheduler; 270 SlaveScheduler slaveScheduler;
270 RequestHandler requestHandler; 271 RequestHandler requestHandler;
271 272
272 SchedSlot ***allSchedSlots; 273 SchedSlot ***allSchedSlots;
273 VMSQueueStruc **readyToAnimateQs; 274 VMSQueueStruc **readyToAnimateQs;
274 VirtProcr **masterVPs; 275 VirtProcr **masterVPs;
275 276
276 void *semanticEnv; 277 void *semanticEnv;
277 void *OSEventStruc; //for future, when add I/O to BLIS 278 void *OSEventStruc; //for future, when add I/O to BLIS
278 MallocProlog *freeListHead; 279 MallocProlog *freeListHead;
285 286
286 int32 numMasterInARow[NUM_CORES];//detect back-to-back masterVP 287 int32 numMasterInARow[NUM_CORES];//detect back-to-back masterVP
287 GateStruc *workStealingGates[ NUM_CORES ]; //concurrent work-steal 288 GateStruc *workStealingGates[ NUM_CORES ]; //concurrent work-steal
288 int32 workStealingLock; 289 int32 workStealingLock;
289 290
290 int32 numProcrsCreated; //gives ordering to processor creation 291 InterMasterReqst* interMasterRequestsFor[NUM_CORES];
292 RequestHandler interPluginReqHdlr;
293
294 int32 numProcrsCreated; //gives ordering to processor creation
291 295
292 //=========== MEASUREMENT STUFF ============= 296 //=========== MEASUREMENT STUFF =============
293 IntervalProbe **intervalProbes; 297 IntervalProbe **intervalProbes;
294 PrivDynArrayInfo *dynIntervalProbesInfo; 298 PrivDynArrayInfo *dynIntervalProbesInfo;
295 HashTable *probeNameHashTbl; 299 HashTable *probeNameHashTbl;
296 int32 masterCreateProbeID; 300 int32 masterCreateProbeID;
297 float64 createPtInSecs; 301 float64 createPtInSecs;
298 Histogram **measHists; 302 Histogram **measHists;
299 PrivDynArrayInfo *measHistsInfo; 303 PrivDynArrayInfo *measHistsInfo;
300 #ifdef MEAS__TIME_PLUGIN 304 #ifdef MEAS__TIME_PLUGIN
301 Histogram *reqHdlrLowTimeHist; 305 Histogram *reqHdlrLowTimeHist;
302 Histogram *reqHdlrHighTimeHist; 306 Histogram *reqHdlrHighTimeHist;
303 #endif 307 #endif
304 #ifdef MEAS__TIME_MALLOC 308 #ifdef MEAS__TIME_MALLOC
305 Histogram *mallocTimeHist; 309 Histogram *mallocTimeHist;
306 Histogram *freeTimeHist; 310 Histogram *freeTimeHist;
307 #endif 311 #endif
308 #ifdef MEAS__TIME_MASTER_LOCK 312 #ifdef MEAS__TIME_MASTER_LOCK
309 Histogram *masterLockLowTimeHist; 313 Histogram *masterLockLowTimeHist;
310 Histogram *masterLockHighTimeHist; 314 Histogram *masterLockHighTimeHist;
311 #endif 315 #endif
312 } 316 }
313 MasterEnv; 317 MasterEnv;
314 318
315 //========================= Extra Stuff Data Strucs ======================= 319 //========================= Extra Stuff Data Strucs =======================