Usage of +killFile option included into command line parsing
authorEsteban Meneses <emenese2@illinois.edu>
Mon, 2 Mar 2009 22:27:37 +0000 (22:27 +0000)
committerEsteban Meneses <emenese2@illinois.edu>
Mon, 2 Mar 2009 22:27:37 +0000 (22:27 +0000)
src/ck-core/init.C

index a823b9e7e967cb2da2d40e18ea5d9c4644a65cd1..5a7ceb97beea7f543f85dd3c450761bb04d7647d 100644 (file)
@@ -131,6 +131,14 @@ typedef void (*CkFtFn)(const char *, CkArgMsg *);
 static CkFtFn  faultFunc = NULL;
 static char* _restartDir;
 
+// flag for killing processes 
+extern int killFlag;
+// file specifying the processes to be killed
+extern char *killFile;
+// function for reading the kill file
+void readKillFile();
+
+
 int _defaultObjectQ = 0;            // for obejct queue
 int _ringexit = 0;                 // for charm exit
 int _ringtoken = 8;
@@ -182,7 +190,18 @@ static inline void _parseCommandLineOpts(char **argv)
 # endif
       CmiPrintf("[%d] Restarting after crash \n",CmiMyPe());
   }
+  // reading the killFile
+  if(CmiGetArgStringDesc(argv,"+killFile", &killFile,"Generates SIGKILL on specified processors")){
+    if(faultFunc == NULL){
+      //do not read the killfile if this is a restarting processor
+      killFlag = 1;
+      if(CmiMyPe() == 0){
+        printf("[%d] killFlag set to 1 for file %s\n",CkMyPe(),killFile);
+      }
+    }
+  }
 #endif
+
   // shut down program in ring fashion to allow projections output w/o IO error
   if (CmiGetArgIntDesc(argv,"+ringexit",&_ringtoken, "Program exits in a ring fashion")) 
   {
@@ -974,6 +993,13 @@ void _initCharm(int unused_argc, char **argv)
        }
 #endif
 
+
+#if __FAULT__
+       if(killFlag){                                                  
+                readKillFile();                                        
+        }
+#endif
+
 }
 
 // this is needed because on o2k, f90 programs have to have main in