notify_crash defined in ckmemcheckpoint.C however is needed by machine.c to notify...
authorGengbin Zheng <gzheng@illinois.edu>
Fri, 5 Mar 2010 16:30:23 +0000 (10:30 -0600)
committerGengbin Zheng <gzheng@illinois.edu>
Fri, 5 Mar 2010 16:30:23 +0000 (10:30 -0600)
Fixed this by using a function pointer.

src/arch/net/machine-recover.c
src/ck-core/ckmemcheckpoint.C
src/conv-core/convcore.c

index e1fb4c8a94f0f499adea09c05fe1e269d9a0b079..f2c6a1ced043730bdc0e1a01b0dfdfae1446f077 100644 (file)
@@ -1,10 +1,10 @@
-extern void notify_crash(int node);
+extern void (*notify_crash_fn)(int);
 
 static void crash_node_handle(ChMessage *m){
        ChMessageInt_t *d = (ChMessageInt_t *)m->data;
        int crashed_node = ChMessageInt(d[0]);
 #if CMK_MEM_CHECKPOINT
-       notify_crash(crashed_node);
+        if (notify_crash_fn!=NULL) notify_crash_fn(crashed_node);
 #endif
        /* tell charmrun we knew */
        ctrl_sendone_nolock("crash_ack",NULL,0,NULL,0);
index 605436ac82c90483a2a2cc62110d42af9b0f6cc0..c8d4747729af6d970ed14ea4dd5a480eaf2a142e 100644 (file)
@@ -1192,6 +1192,7 @@ void notify_crash(int node)
 #endif
 }
 
+extern "C" void (*notify_crash_fn)(int node);
 
 // initproc
 void CkRegisterRestartHandler( )
@@ -1206,6 +1207,7 @@ void CkRegisterRestartHandler( )
   CpvInitialize(CkProcCheckPTMessage *, procChkptBuf);
   CpvAccess(procChkptBuf) = NULL;
 
+  notify_crash_fn = notify_crash;
 #if 1
   // for debugging
   CkPrintf("[%d] PID %d \n", CkMyPe(), getpid());
index 3dd6fbe8b01e94e1fb4d212e96c1d60377d1478e..9981880b7e5a5e2fdf08cdfa240d861c0e6dadf2 100644 (file)
@@ -135,6 +135,10 @@ static int CsdLocalMax = CSD_LOCAL_MAX_DEFAULT;
 
 CpvStaticDeclare(int, CmiMainHandlerIDP); /* Main handler for _CmiMultipleSend that is run on every node */
 
+#if CMK_MEM_CHECKPOINT
+void (*notify_crash_fn)(int) = NULL;
+#endif
+
 /*****************************************************************************
  *
  * Unix Stub Functions