Mercurial > cgi-bin > hgwebdir.cgi > VMS > VMS_Implementations > VMS_impls > VMS__MC_shared_impl
comparison VMS.h @ 218:82f7defac851
Added backoff to core loop, cleaned up core loop code, cleaned comments
| author | Some Random Person <seanhalle@yahoo.com> |
|---|---|
| date | Sat, 10 Mar 2012 21:48:53 -0800 |
| parents | 10a72bcedbf0 |
| children | 8059fb8d5465 |
comparison
equal
deleted
inserted
replaced
| 102:81384f7fc3d3 | 103:057cc6c4005b |
|---|---|
| 50 typedef void TopLevelFn ( void *, SlaveVP * ); //initData, animSlv | 50 typedef void TopLevelFn ( void *, SlaveVP * ); //initData, animSlv |
| 51 typedef void (*ResumeSlvFnPtr) ( SlaveVP *, void * ); | 51 typedef void (*ResumeSlvFnPtr) ( SlaveVP *, void * ); |
| 52 | 52 |
| 53 //============================ HW Dependent Fns ================================ | 53 //============================ HW Dependent Fns ================================ |
| 54 | 54 |
| 55 #include "VMS__HW_dependent.h" | 55 #include "Hardware_Dependent/VMS__HW_measurement.h" |
| 56 #include "Hardware_Dependent/VMS__primitives.h" | |
| 56 | 57 |
| 57 //============================= Statistics ================================== | 58 //============================= Statistics ================================== |
| 58 | 59 |
| 59 inline TSCount getTSCount(); | 60 inline TSCount getTSCount(); |
| 60 | 61 |
| 112 void *startOfStack; | 113 void *startOfStack; |
| 113 void *stackPtr; | 114 void *stackPtr; |
| 114 void *framePtr; | 115 void *framePtr; |
| 115 void *resumeInstrPtr; | 116 void *resumeInstrPtr; |
| 116 | 117 |
| 117 void *coreLoopStartPt; //allows proto-runtime to be linked later | 118 void *coreCtlrStartPt; //allows proto-runtime to be linked later |
| 118 void *coreLoopFramePtr; //restore before jmp back to core loop | 119 void *coreCtlrFramePtr; //restore before jmp back to core controller |
| 119 void *coreLoopStackPtr; //restore before jmp back to core loop | 120 void *coreCtlrStackPtr; //restore before jmp back to core controller |
| 120 | 121 |
| 121 SchedSlot *schedSlot; | 122 SchedSlot *schedSlot; |
| 122 VMSReqst *requests; | 123 VMSReqst *requests; |
| 123 | 124 |
| 124 void *semanticData; //this is live for the life of Slv | 125 void *semanticData; //this is live for the life of Slv |
| 149 void *semanticEnv; | 150 void *semanticEnv; |
| 150 void *OSEventStruc; //for future, when add I/O to BLIS | 151 void *OSEventStruc; //for future, when add I/O to BLIS |
| 151 MallocArrays *freeLists; | 152 MallocArrays *freeLists; |
| 152 int32 amtOfOutstandingMem; //total currently allocated | 153 int32 amtOfOutstandingMem; //total currently allocated |
| 153 | 154 |
| 154 void *coreLoopReturnPt;//addr to jump to to re-enter coreLoop | 155 void *coreCtlrReturnPt;//addr to jump to to re-enter coreCtlr |
| 155 | 156 |
| 156 int32 setupComplete; | 157 int32 setupComplete; |
| 157 int32 numMasterInARow[NUM_CORES];//detect back-to-back masterVP | 158 int32 numMasterInARow[NUM_CORES];//detect back-to-back masterVP |
| 158 int32 masterLock __align_to_cacheline__; | 159 int32 masterLock __align_to_cacheline__; |
| 159 GateStruc *workStealingGates[ NUM_CORES ]; //concurrent work-steal | 160 GateStruc *workStealingGates[ NUM_CORES ]; //concurrent work-steal |
| 196 }; | 197 }; |
| 197 //GateStruc | 198 //GateStruc |
| 198 | 199 |
| 199 //======================= OS Thread related =============================== | 200 //======================= OS Thread related =============================== |
| 200 | 201 |
| 201 void * coreLoop( void *paramsIn ); //standard PThreads fn prototype | 202 void * coreController( void *paramsIn ); //standard PThreads fn prototype |
| 202 void * coreLoop_Seq( void *paramsIn ); //standard PThreads fn prototype | 203 void * coreCtlr_Seq( void *paramsIn ); //standard PThreads fn prototype |
| 203 void masterLoop( void *initData, SlaveVP *masterVP ); | 204 void masterLoop( void *initData, SlaveVP *masterVP ); |
| 204 | 205 |
| 205 | 206 |
| 206 typedef struct | 207 typedef struct |
| 207 { | 208 { |
| 212 | 213 |
| 213 //============================= Global Vars ================================ | 214 //============================= Global Vars ================================ |
| 214 | 215 |
| 215 volatile MasterEnv *_VMSMasterEnv __align_to_cacheline__; | 216 volatile MasterEnv *_VMSMasterEnv __align_to_cacheline__; |
| 216 | 217 |
| 217 pthread_t coreLoopThdHandles[ NUM_CORES ]; //pthread's virt-procr state | 218 pthread_t coreCtlrThdHandles[ NUM_CORES ]; //pthread's virt-procr state |
| 218 ThdParams *coreLoopThdParams [ NUM_CORES ]; | 219 ThdParams *coreCtlrThdParams [ NUM_CORES ]; |
| 219 pthread_mutex_t suspendLock = PTHREAD_MUTEX_INITIALIZER; | 220 pthread_mutex_t suspendLock = PTHREAD_MUTEX_INITIALIZER; |
| 220 pthread_cond_t suspendCond = PTHREAD_COND_INITIALIZER; | 221 pthread_cond_t suspendCond = PTHREAD_COND_INITIALIZER; |
| 221 | 222 |
| 222 //========================= Function Prototypes =========================== | 223 //========================= Function Prototypes =========================== |
| 223 | 224 |
