# HG changeset patch # User Some Random Person # Date 1331966857 25200 # Node ID 81a0f076b12e41d1296884994995472d04bc2996 # Parent b5b5323b417779dce9c0199b86ab6ef186e0e72c# Parent ce95c4d84fcd1ed9a9926fe0a244f5ae689ce15a Merged Nina's shutdown fix with schedSlot -> animSlot and other name chgs diff -r b5b5323b4177 -r 81a0f076b12e SSR.c --- a/SSR.c Fri Mar 16 23:41:31 2012 -0700 +++ b/SSR.c Fri Mar 16 23:47:37 2012 -0700 @@ -199,6 +199,7 @@ #ifdef HOLISTIC__TURN_ON_PERF_COUNTERS SSR__init_counter_data_structs(); #endif + semanticEnv->shutdownInitiated = FALSE; for(i=0;iidlePr[i][j] = VMS_int__create_slaveVP(&idle_fn,NULL); diff -r b5b5323b4177 -r 81a0f076b12e SSR.h --- a/SSR.h Fri Mar 16 23:41:31 2012 -0700 +++ b/SSR.h Fri Mar 16 23:47:37 2012 -0700 @@ -127,6 +127,7 @@ ListOfArrays* counterList[NUM_CORES]; #endif SlaveVP* idlePr[NUM_CORES][NUM_SCHED_SLOTS]; + int shutdownInitiated; } SSRSemEnv; diff -r b5b5323b4177 -r 81a0f076b12e SSR_PluginFns.c --- a/SSR_PluginFns.c Fri Mar 16 23:41:31 2012 -0700 +++ b/SSR_PluginFns.c Fri Mar 16 23:47:37 2012 -0700 @@ -48,6 +48,10 @@ //Note, using a non-blocking queue -- it returns NULL if queue empty if(!assignPr){ assignPr = semEnv->idlePr[coreNum][slotNum]; + + if(semEnv->shutdownInitiated) { + schedPr = VMS_SS__create_shutdown_slave(); + } //things that would normally happen in resume(), but these VPs never go there #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC assignPr->assignCount++; //Somewhere here! @@ -188,7 +192,8 @@ semEnv->numSlaveVP -= 1; if( semEnv->numSlaveVP == 0 ) { //no more work, so shutdown - VMS_SS__shutdown(); + semEnv->shutdownInitiated = TRUE; + //VMS_SS__shutdown(); } }