diff VMS.c @ 193:20358f56e498

fix coreloop recording bug and eliminate race condition on measurement-collecting list
author Nina Engelhardt <nengel@mailbox.tu-berlin.de>
date Thu, 09 Feb 2012 15:40:11 +0100
parents 69eb54ce9c4b
children d83f59e6e2db
line diff
     1.1 --- a/VMS.c	Fri Feb 03 17:32:48 2012 +0100
     1.2 +++ b/VMS.c	Thu Feb 09 15:40:11 2012 +0100
     1.3 @@ -149,6 +149,7 @@
     1.4           //Q: should give masterVP core-specific info as its init data?
     1.5        masterVPs[ coreIdx ] = VMS__create_procr( (VirtProcrFnPtr)&masterLoop, (void*)masterEnv );
     1.6        masterVPs[ coreIdx ]->coreAnimatedBy = coreIdx;
     1.7 +      masterVPs[ coreIdx ]->isMasterVP = TRUE;
     1.8        allSchedSlots[ coreIdx ] = create_sched_slots(); //makes for one core
     1.9        _VMSMasterEnv->numMasterInARow[ coreIdx ] = 0;
    1.10        _VMSMasterEnv->workStealingGates[ coreIdx ] = NULL;
    1.11 @@ -440,7 +441,7 @@
    1.12          //start work
    1.13     uint64 cycles,instrs;
    1.14     saveCyclesAndInstrs(animatingPr->coreAnimatedBy,cycles, instrs);
    1.15 -   (*(_VMSMasterEnv->counterHandler))(Procr_suspend,animatingPr,cycles,instrs); 
    1.16 +   (*(_VMSMasterEnv->counterHandler))(HwResponderInvocation_start,animatingPr->procrID,animatingPr->numTimesScheduled,animatingPr,cycles,instrs); 
    1.17     #endif     
    1.18     //=======================================================================
    1.19  
    1.20 @@ -730,6 +731,7 @@
    1.21     for( coreIdx=0; coreIdx < NUM_CORES; coreIdx++ )
    1.22      {    //Note, this is running in the master
    1.23        shutDownPr = VMS__create_procr( &endOSThreadFn, NULL );
    1.24 +      shutDownPr->isShutdownVP = TRUE;
    1.25        writeVMSQ( shutDownPr, _VMSMasterEnv->readyToAnimateQs[coreIdx] );
    1.26      }
    1.27  #ifdef MEAS__PERF_COUNTERS