Mercurial > cgi-bin > hgwebdir.cgi > VMS > VMS_Implementations > SSR_impls > SSR__MC_shared_impl
changeset 61:33b2eb9af81a Holistic_Model
more changes to vms_impl and ssr_impl
author | Some Random Person <seanhalle@yahoo.com> |
---|---|
date | Sat, 10 Mar 2012 20:35:38 -0800 |
parents | 3c9ed64db705 |
children | 64bacf647af9 |
files | DESIGN_NOTES.txt SSR_PluginFns.c SSR_Request_Handlers.c SSR_lib.c |
diffstat | 4 files changed, 26 insertions(+), 26 deletions(-) [+] |
line diff
1.1 --- a/DESIGN_NOTES.txt Fri Mar 09 22:28:08 2012 -0800 1.2 +++ b/DESIGN_NOTES.txt Sat Mar 10 20:35:38 2012 -0800 1.3 @@ -23,7 +23,7 @@ 1.4 { 1.5 AVProcr newSlv = malloc( sizeof(AVProcr) ); 1.6 newSlv->jmpPtr = fnPtr; 1.7 -newSlv->coreLoopDonePt = &CoreLoopDonePt; //label is in coreLoop 1.8 +newSlv->coreCtlrDonePt = &CoreCtlrDonePt; //label is in coreCtlr 1.9 newSlv->data = initialData; 1.10 newSlv->stackPtr = createNewStack(); 1.11 return newSlv; 1.12 @@ -38,19 +38,19 @@ 1.13 MasterLoop: 1.14 -- puts AVProcr structures onto the workQ 1.15 1.16 -CoreLoop: 1.17 +CoreCtlr: 1.18 -- gets stack-ptr out of AVProcr and sets the core's stack-ptr to that 1.19 -- gets data-ptr out of AVProcr and puts it into reg GCC uses for that param 1.20 -- puts AVProcr's addr into reg GCC uses for the AVProcr-pointer param 1.21 -- jumps to the addr in AVProcr's jmp-ptr field 1.22 -CoreLoop() 1.23 +CoreCtlr() 1.24 { while( FOREVER ) 1.25 { nextSlv = readQ( workQ ); //workQ is static (global) var declared volatile 1.26 <dataPtr-param-register> = nextSlv->data; 1.27 <AVProcrPtr-param-register> = nextSlv; 1.28 <stack-pointer register> = nextSlv->stackPtr; 1.29 jmp nextSlv->jmpPtr; 1.30 -CoreLoopDonePt: //label's addr put into AVProcr when create new one 1.31 +CoreCtlrDonePt: //label's addr put into AVProcr when create new one 1.32 } 1.33 } 1.34 (Note, for suspendable processors coming back from suspension, there is no 1.35 @@ -62,12 +62,12 @@ 1.36 pr->jmpPtr = &ResumePt; //label defined a few lines below 1.37 pr->slave->doneFlag = TRUE; 1.38 pr->stackPtr = <current SP reg value>; 1.39 -jmp pr->coreLoopDonePt; 1.40 +jmp pr->coreCtlrDonePt; 1.41 ResumePt: return; 1.42 } 1.43 1.44 -This works because the core loop will have switched back to this stack 1.45 - before jumping to ResumePt.. also, the core loop never modifies the 1.46 +This works because the core controller will have switched back to this stack 1.47 + before jumping to ResumePt.. also, the core controller never modifies the 1.48 stack pointer, it simply switches to whatever stack pointer is in the 1.49 next AVProcr it gets off the workQ. 1.50 1.51 @@ -171,7 +171,7 @@ 1.52 goto *labelAddr; 1.53 1.54 --2 1.55 -In CoreLoop, will check whether VirtProc just born, or was suspended. 1.56 +In CoreCtlr, will check whether VirtProc just born, or was suspended. 1.57 If just born, do bit of code that sets up the virtual processor's stack 1.58 and frame according to the __cdecl convention for the standard virt proc 1.59 fn typedef -- save the pointer to data and pointer to virt proc struc into
2.1 --- a/SSR_PluginFns.c Fri Mar 09 22:28:08 2012 -0800 2.2 +++ b/SSR_PluginFns.c Sat Mar 10 20:35:38 2012 -0800 2.3 @@ -176,7 +176,7 @@ 2.4 void 2.5 handleDissipate( SlaveVP *requestingPr, SSRSemEnv *semEnv ) 2.6 { 2.7 - DEBUG1(dbgRqstHdlr,"Dissipate request from processor %d\n",requestingPr->slaveID) 2.8 + DEBUG_Print1(dbgRqstHdlr,"Dissipate request from processor %d\n",requestingPr->slaveID) 2.9 //free any semantic data allocated to the virt procr 2.10 VMS_PI__free( requestingPr->semanticData ); 2.11 2.12 @@ -238,14 +238,14 @@ 2.13 { SSRSemReq *semReq; 2.14 SlaveVP *newPr; 2.15 2.16 - DEBUG1(dbgRqstHdlr,"Create request from processor %d ",requestingPr->slaveID) 2.17 + DEBUG_Print1(dbgRqstHdlr,"Create request from processor %d ",requestingPr->slaveID) 2.18 2.19 semReq = VMS_PI__take_sem_reqst_from( req ); 2.20 2.21 newPr = SSR__create_procr_helper( semReq->fnPtr, semReq->initData, semEnv, 2.22 semReq->coreToScheduleOnto ); 2.23 2.24 - DEBUG1(dbgRqstHdlr,"(new VP: %d)\n",newPr->slaveID) 2.25 + DEBUG_Print1(dbgRqstHdlr,"(new VP: %d)\n",newPr->slaveID) 2.26 2.27 #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC 2.28 Dependency newd;
3.1 --- a/SSR_Request_Handlers.c Fri Mar 09 22:28:08 2012 -0800 3.2 +++ b/SSR_Request_Handlers.c Sat Mar 10 20:35:38 2012 -0800 3.3 @@ -89,7 +89,7 @@ 3.4 HashEntry *entry; 3.5 HashTable *commHashTbl = semEnv->commHashTbl; 3.6 3.7 - DEBUG1(dbgRqstHdlr,"SendType request from processor %d\n",semReq->sendPr->slaveID) 3.8 + DEBUG_Print1(dbgRqstHdlr,"SendType request from processor %d\n",semReq->sendPr->slaveID) 3.9 3.10 receivePr = semReq->receivePr; //For "send", know both send & recv procrs 3.11 sendPr = semReq->sendPr; 3.12 @@ -120,7 +120,7 @@ 3.13 SSRSemReq *clonedReq = cloneReq( semReq ); 3.14 clonedReq-> nextReqInHashEntry = waitingReq->nextReqInHashEntry; 3.15 waitingReq->nextReqInHashEntry = clonedReq; 3.16 - DEBUG2( dbgRqstHdlr, "linked requests: %p, %p | ", clonedReq,\ 3.17 + DEBUG_Print2( dbgRqstHdlr, "linked requests: %p, %p | ", clonedReq,\ 3.18 waitingReq ) 3.19 return; 3.20 } 3.21 @@ -185,7 +185,7 @@ 3.22 HashEntry *entry; 3.23 HashTable *commHashTbl = semEnv->commHashTbl; 3.24 3.25 - DEBUG2(dbgRqstHdlr,"SendFromTo request from processor %d to %d\n",semReq->sendPr->slaveID,semReq->receivePr->slaveID) 3.26 + DEBUG_Print2(dbgRqstHdlr,"SendFromTo request from processor %d to %d\n",semReq->sendPr->slaveID,semReq->receivePr->slaveID) 3.27 3.28 receivePr = semReq->receivePr; //For "send", know both send & recv procrs 3.29 sendPr = semReq->sendPr; 3.30 @@ -285,7 +285,7 @@ 3.31 3.32 receivePr = semReq->receivePr; 3.33 3.34 - DEBUG1(dbgRqstHdlr,"ReceiveType request from processor %d\n",receivePr->slaveID) 3.35 + DEBUG_Print1(dbgRqstHdlr,"ReceiveType request from processor %d\n",receivePr->slaveID) 3.36 3.37 key[0] = (int)receivePr->slaveID; 3.38 key[1] = (int)(semReq->msgType); 3.39 @@ -358,7 +358,7 @@ 3.40 HashEntry *entry; 3.41 HashTable *commHashTbl = semEnv->commHashTbl; 3.42 3.43 - DEBUG2(dbgRqstHdlr,"ReceiveFromTo request from processor %d to %d\n",semReq->sendPr->slaveID,semReq->receivePr->slaveID) 3.44 + DEBUG_Print2(dbgRqstHdlr,"ReceiveFromTo request from processor %d to %d\n",semReq->sendPr->slaveID,semReq->receivePr->slaveID) 3.45 3.46 receivePr = semReq->receivePr; 3.47 sendPr = semReq->sendPr; //for receive from-to, know send procr 3.48 @@ -427,7 +427,7 @@ 3.49 handleMalloc( SSRSemReq *semReq, SlaveVP *requestingPr, SSRSemEnv *semEnv ) 3.50 { void *ptr; 3.51 3.52 - DEBUG1(dbgRqstHdlr,"Malloc request from processor %d\n",requestingPr->slaveID) 3.53 + DEBUG_Print1(dbgRqstHdlr,"Malloc request from processor %d\n",requestingPr->slaveID) 3.54 3.55 ptr = VMS_PI__malloc( semReq->sizeToMalloc ); 3.56 requestingPr->dataRetFromReq = ptr; 3.57 @@ -439,7 +439,7 @@ 3.58 void 3.59 handleFree( SSRSemReq *semReq, SlaveVP *requestingPr, SSRSemEnv *semEnv ) 3.60 { 3.61 - DEBUG1(dbgRqstHdlr,"Free request from processor %d\n",requestingPr->slaveID) 3.62 + DEBUG_Print1(dbgRqstHdlr,"Free request from processor %d\n",requestingPr->slaveID) 3.63 VMS_PI__free( semReq->ptrToFree ); 3.64 resume_slaveVP( requestingPr, semEnv ); 3.65 } 3.66 @@ -477,7 +477,7 @@ 3.67 handleStartFnSingleton( SSRSemReq *semReq, SlaveVP *requestingPr, 3.68 SSRSemEnv *semEnv ) 3.69 { SSRSingleton *singleton; 3.70 - DEBUG1(dbgRqstHdlr,"StartFnSingleton request from processor %d\n",requestingPr->slaveID) 3.71 + DEBUG_Print1(dbgRqstHdlr,"StartFnSingleton request from processor %d\n",requestingPr->slaveID) 3.72 3.73 singleton = &(semEnv->fnSingletons[ semReq->singletonID ]); 3.74 handleStartSingleton_helper( singleton, requestingPr, semEnv ); 3.75 @@ -487,7 +487,7 @@ 3.76 SSRSemEnv *semEnv ) 3.77 { SSRSingleton *singleton; 3.78 3.79 - DEBUG1(dbgRqstHdlr,"StartDataSingleton request from processor %d\n",requestingPr->slaveID) 3.80 + DEBUG_Print1(dbgRqstHdlr,"StartDataSingleton request from processor %d\n",requestingPr->slaveID) 3.81 if( *(semReq->singletonPtrAddr) == NULL ) 3.82 { singleton = VMS_PI__malloc( sizeof(SSRSingleton) ); 3.83 singleton->waitQ = makeVMSQ(); 3.84 @@ -534,7 +534,7 @@ 3.85 { 3.86 SSRSingleton *singleton; 3.87 3.88 - DEBUG1(dbgRqstHdlr,"EndFnSingleton request from processor %d\n",requestingPr->slaveID) 3.89 + DEBUG_Print1(dbgRqstHdlr,"EndFnSingleton request from processor %d\n",requestingPr->slaveID) 3.90 3.91 singleton = &(semEnv->fnSingletons[ semReq->singletonID ]); 3.92 handleEndSingleton_helper( singleton, requestingPr, semEnv ); 3.93 @@ -545,7 +545,7 @@ 3.94 { 3.95 SSRSingleton *singleton; 3.96 3.97 - DEBUG1(dbgRqstHdlr,"EndDataSingleton request from processor %d\n",requestingPr->slaveID) 3.98 + DEBUG_Print1(dbgRqstHdlr,"EndDataSingleton request from processor %d\n",requestingPr->slaveID) 3.99 3.100 singleton = *(semReq->singletonPtrAddr); 3.101 handleEndSingleton_helper( singleton, requestingPr, semEnv ); 3.102 @@ -558,7 +558,7 @@ 3.103 void 3.104 handleAtomic( SSRSemReq *semReq, SlaveVP *requestingPr, SSRSemEnv *semEnv ) 3.105 { 3.106 - DEBUG1(dbgRqstHdlr,"Atomic request from processor %d\n",requestingPr->slaveID) 3.107 + DEBUG_Print1(dbgRqstHdlr,"Atomic request from processor %d\n",requestingPr->slaveID) 3.108 semReq->fnToExecInMaster( semReq->dataForFn ); 3.109 resume_slaveVP( requestingPr, semEnv ); 3.110 } 3.111 @@ -583,7 +583,7 @@ 3.112 { SSRSemData *semData; 3.113 TransListElem *nextTransElem; 3.114 3.115 - DEBUG1(dbgRqstHdlr,"TransStart request from processor %d\n",requestingPr->slaveID) 3.116 + DEBUG_Print1(dbgRqstHdlr,"TransStart request from processor %d\n",requestingPr->slaveID) 3.117 3.118 //check ordering of entering transactions is correct 3.119 semData = requestingPr->semanticData; 3.120 @@ -637,7 +637,7 @@ 3.121 SSRTrans *transStruc; 3.122 TransListElem *lastTrans; 3.123 3.124 - DEBUG1(dbgRqstHdlr,"TransEnd request from processor %d\n",requestingPr->slaveID) 3.125 + DEBUG_Print1(dbgRqstHdlr,"TransEnd request from processor %d\n",requestingPr->slaveID) 3.126 3.127 transStruc = &(semEnv->transactionStrucs[ semReq->transID ]); 3.128
4.1 --- a/SSR_lib.c Fri Mar 09 22:28:08 2012 -0800 4.2 +++ b/SSR_lib.c Sat Mar 10 20:35:38 2012 -0800 4.3 @@ -30,7 +30,7 @@ 4.4 4.5 /*TODO: Q: dealing with library f()s and DKU vs WT vs FoR 4.6 * (still want to do FoR, with time-lines as syntax, could be super cool) 4.7 - * A: thinking pin the coreLoops for all of BLIS -- let Master arbitrate 4.8 + * A: thinking pin the coreCtlrs for all of BLIS -- let Master arbitrate 4.9 * among library, DKU, WT, FoR -- all the patterns in terms of virtual 4.10 * processors (or equivalently work-units), so Master picks which virt procr 4.11 * from which portions of app (DKU, WT, FoR) onto which sched slots