diff AnimationMaster.c @ 278:2fc69e6c14ea

Dev_ML -- works in both sequential and concurrent modes
author Sean Halle <seanhalle@yahoo.com>
date Fri, 08 Mar 2013 05:34:21 -0800
parents 1d7ea1b0f176
children 72ffdb11ad8e 15ee3fe10e3d
line diff
     1.1 --- a/AnimationMaster.c	Mon Mar 04 00:40:38 2013 -0800
     1.2 +++ b/AnimationMaster.c	Fri Mar 08 05:34:21 2013 -0800
     1.3 @@ -74,9 +74,11 @@
     1.4     if( slot->workIsDone )
     1.5      { slot->workIsDone = FALSE;
     1.6        slot->needsWorkAssigned = TRUE;
     1.7 +printf("top handle request: %d | reqType: %d\n", slot->coreSlotIsOn, (int32)req->reqType );fflush(stdin);
     1.8        
     1.9           //An Idle VP has no request to handle, so skip to assign..
    1.10 -      if( slot->slaveAssignedToSlot->typeOfVP != IdleVP )
    1.11 +      if( slot->slaveAssignedToSlot->typeOfVP != IdleVP && 
    1.12 +          slot->slaveAssignedToSlot->typeOfVP != ShutdownVP)
    1.13         {
    1.14                 HOLISTIC__Record_AppResponder_start; //TODO: update to check which process for each slot
    1.15                 MEAS__startReqHdlr;
    1.16 @@ -93,7 +95,8 @@
    1.17  
    1.18           //Handle task create and end first -- they're special cases..
    1.19           switch( req->reqType )
    1.20 -          { case TaskEnd: 
    1.21 +          { 
    1.22 +            case TaskEnd: 
    1.23               { //do PR handler, which calls lang's hdlr and does recycle of
    1.24                 // free task slave if needed -- PR handler checks for free task Slv
    1.25                 PRHandle__EndTask( req, slave );                          break;
    1.26 @@ -121,6 +124,11 @@
    1.27             MEAS__endReqHdlr;          
    1.28             HOLISTIC__Record_AppResponder_end;
    1.29         }//if not idleVP
    1.30 +      else if( slot->slaveAssignedToSlot->typeOfVP == ShutdownVP )
    1.31 +       {    //ShutdownVP used, essentially, as a flag, to cause terminate here
    1.32 +         PR_int__release_master_lock();
    1.33 +         terminateCoreCtlr( slot->slaveAssignedToSlot );
    1.34 +       }
    1.35      } //if have request to be handled
    1.36  
    1.37        //NOTE: IF statement is leftover from when master managed many slots