# HG changeset patch # User Nina Engelhardt # Date 1328031040 -3600 # Node ID 8035f05442c0bda9e91af0bdc744d8b8b6968c10 # Parent 323418163771a67952068612471c0e1805c78c97 fix uninitialised semantic Data bug diff -r 323418163771 -r 8035f05442c0 SSR_Counter_Recording.c --- a/SSR_Counter_Recording.c Fri Jan 13 18:34:37 2012 +0100 +++ b/SSR_Counter_Recording.c Tue Jan 31 18:30:40 2012 +0100 @@ -9,13 +9,21 @@ void SSR__counter_handler(int evt_type, VirtProcr* pr, uint64 cycles, uint64 instrs) { - + if(!pr) + return; + + //FIXME: find more reliable way to separate master and slave VPs + if (pr->procrID < 2) //filters master VPs + return; + if (pr->numTimesScheduled < 1) //filters shutdown VP + return; + SSRSemEnv *semanticEnv = _VMSMasterEnv->semanticEnv; CounterEvent e; e.event_type = evt_type; e.coreID = pr->coreAnimatedBy; - e.slotID = pr->schedSlot; + e.slot = pr->schedSlot; e.cycles = cycles; e.instrs = instrs; e.vp = pr->procrID; @@ -30,6 +38,34 @@ void print_counter_events_to_file(void* _e){ CounterEvent* e = (CounterEvent*) _e; - - fprintf(counterfile, "event, %d, %d, %d, %llu, %llu\n",e->event_type,e->vp,e->task,e->cycles,e->instrs); + fprintf(counterfile, "event, "); + switch(e->event_type){ + case MasterLoop_beforeReqHdlr: + fprintf(counterfile, "MasterLoop_beforeReqHdlr"); + break; + case MasterLoop_afterReqHdlr: + fprintf(counterfile, "MasterLoop_afterReqHdlr"); + break; + case MasterLoop_beforeAssign: + fprintf(counterfile, "MasterLoop_beforeAssign"); + break; + case MasterLoop_afterAssign: + fprintf(counterfile, "MasterLoop_afterAssign"); + break; + case CoreLoop_afterWork: + fprintf(counterfile, "CoreLoop_afterWork"); + break; + case CoreLoop_beforeWork: + fprintf(counterfile, "CoreLoop_beforeWork"); + break; + case Procr_suspend: + fprintf(counterfile, "Procr_suspend"); + break; +// case MasterLoop_beforeNextAssign: +// fprintf(counterfile, "MasterLoop_beforeNextAssign"); +// break; + default: + fprintf(counterfile, "unknown event"); + } + fprintf(counterfile,", %d, %d, %llu, %llu\n",e->vp,e->task,e->cycles,e->instrs); } \ No newline at end of file diff -r 323418163771 -r 8035f05442c0 SSR_Counter_Recording.h --- a/SSR_Counter_Recording.h Fri Jan 13 18:34:37 2012 +0100 +++ b/SSR_Counter_Recording.h Tue Jan 31 18:30:40 2012 +0100 @@ -13,7 +13,7 @@ typedef struct { int event_type; int coreID; - int slotID; + SchedSlot* slot; int vp; int task; uint64 cycles; diff -r 323418163771 -r 8035f05442c0 SSR_PluginFns.c --- a/SSR_PluginFns.c Fri Jan 13 18:34:37 2012 +0100 +++ b/SSR_PluginFns.c Tue Jan 31 18:30:40 2012 +0100 @@ -44,24 +44,23 @@ schedPr = readPrivQ( semEnv->readyVPQs[coreNum] ); //Note, using a non-blocking queue -- it returns NULL if queue empty + #ifdef OBSERVE_UCC if (schedPr) { - schedPr->numTimesScheduled++; - -#ifdef OBSERVE_UCC - Unit prev_in_slot = semEnv->last_in_slot[coreNum * NUM_SCHED_SLOTS + slotNum]; - if(prev_in_slot.vp != 0){ - Dependency newd; - newd.from_vp = prev_in_slot.vp; - newd.from_task = prev_in_slot.task; - newd.to_vp = schedPr->procrID; - newd.to_task = schedPr->numTimesScheduled; - addToListOfArrays(Dependency,newd,semEnv->hwArcs); + //schedPr->numTimesScheduled++; + Unit prev_in_slot = semEnv->last_in_slot[coreNum * NUM_SCHED_SLOTS + slotNum]; + if(prev_in_slot.vp != 0){ + Dependency newd; + newd.from_vp = prev_in_slot.vp; + newd.from_task = prev_in_slot.task; + newd.to_vp = schedPr->procrID; + newd.to_task = schedPr->numTimesScheduled; + addToListOfArrays(Dependency,newd,semEnv->hwArcs); + } + prev_in_slot.vp = schedPr->procrID; + prev_in_slot.task = schedPr->numTimesScheduled; + semEnv->last_in_slot[coreNum * NUM_SCHED_SLOTS + slotNum] = prev_in_slot; } - prev_in_slot.vp = schedPr->procrID; - prev_in_slot.task = schedPr->numTimesScheduled; - semEnv->last_in_slot[coreNum * NUM_SCHED_SLOTS + slotNum] = prev_in_slot; -#endif - } + #endif return( schedPr ); } @@ -188,6 +187,8 @@ semData->highestTransEntered = -1; semData->lastTransEntered = NULL; + newPr->semanticData = semData; + //=================== Assign new processor to a core ===================== #ifdef SEQUENTIAL newPr->coreAnimatedBy = 0; @@ -231,7 +232,7 @@ newd.from_vp = requestingPr->procrID; newd.from_task = requestingPr->numTimesScheduled; newd.to_vp = newPr->procrID; - newd.to_task = 0; + newd.to_task = 1; //addToListOfArraysDependency(newd,semEnv->commDependenciesList); addToListOfArrays(Dependency,newd,semEnv->commDependenciesList); #endif @@ -256,17 +257,18 @@ */ #endif #ifdef OBSERVE_UCC + procr->numTimesScheduled++; //Somewhere here! Unit newu; newu.vp = procr->procrID; - newu.task = procr->numTimesScheduled + 1; + newu.task = procr->numTimesScheduled; addToListOfArrays(Unit,newu,semEnv->unitList); - if (procr->numTimesScheduled > 0){ + if (procr->numTimesScheduled > 1){ Dependency newd; newd.from_vp = procr->procrID; - newd.from_task = procr->numTimesScheduled; + newd.from_task = procr->numTimesScheduled - 1; newd.to_vp = procr->procrID; - newd.to_task = procr->numTimesScheduled + 1; + newd.to_task = procr->numTimesScheduled; addToListOfArrays(Dependency, newd ,semEnv->ctlDependenciesList); } #endif