# HG changeset patch # User Merten Sach # Date 1328288229 -3600 # Node ID 91d0d2e06719395f9cd1d314af4b91f15ebe656e # Parent c66137e4dc2f65ebdfbee157987e95cf86544511 backoff won't be optimized out by gcc diff -r c66137e4dc2f -r 91d0d2e06719 CoreLoop.c --- a/CoreLoop.c Fri Jan 13 11:49:05 2012 +0100 +++ b/CoreLoop.c Fri Feb 03 17:57:09 2012 +0100 @@ -47,6 +47,8 @@ int32 numMasterInARow = 0; volatile int32 *masterLock; VirtProcr *masterVP; + + double workspace1,workspace2; //variables for master lock busy waiting // init random number generator for retries uint32_t seed1 = rand()%1000; @@ -141,11 +143,16 @@ while( currVP == NULL ) //if queue was empty, enter get masterLock loop { //queue was empty, so get master lock - if(numMasterInARow > 2){ - wait_iterations=(randomNumber(&seed1, &seed2) % (numMasterInARow*numMasterInARow))*100; - int i; - for(i=0; i 2){ + wait_iterations=(randomNumber(&seed1, &seed2) % (numMasterInARow*numMasterInARow))*100; + int i; + for(i=0; iwait_iterations_hist ); int i; - for(i=0; istartMaster.longVal = endSusp.longVal; #endif //================================================== - }//CoreLoop + }//CoreLoop + + return (workspace1 + workspace2); //gcc fake out for -O3 } inline uint32_t diff -r c66137e4dc2f -r 91d0d2e06719 MasterLoop.c --- a/MasterLoop.c Fri Jan 13 11:49:05 2012 +0100 +++ b/MasterLoop.c Fri Feb 03 17:57:09 2012 +0100 @@ -106,7 +106,6 @@ slaveScheduler = masterEnv->slaveScheduler; semanticEnv = masterEnv->semanticEnv; - //masterLoopStartPt: while(1){ //switch to core_loop and back to here is at end of loop //============================= MEASUREMENT STUFF ======================= @@ -120,10 +119,10 @@ //Poll each slot's Done flag - numSlotsFilled = 0; - /* + numSlotsFilled = 0; + /* Meas_startMasterLoop - */ + */ for( slotIdx = 0; slotIdx < NUM_SCHED_SLOTS; slotIdx++) { currSlot = schedSlots[ slotIdx ];