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