Can't depend on getpid to do the notification
authorFilippo Gioachin <gioachin@uiuc.edu>
Fri, 23 Apr 2010 19:11:41 +0000 (14:11 -0500)
committerFilippo Gioachin <gioachin@uiuc.edu>
Fri, 23 Apr 2010 19:11:41 +0000 (14:11 -0500)
src/conv-ccs/middle-ccs.C

index 3fb6e888c00a2e1867d10cbd183b4d0e685694ef..c4a5e4524ed0f4f502a91cf03d54f82d8aa4e0d2 100644 (file)
@@ -112,14 +112,16 @@ CpvDeclare(int, freezeModeFlag);
  */
 void CpdFreeze(void)
 {
+  pid_t pid = 0;
 #if CMK_HAS_GETPID
-  CpdNotify(CPD_FREEZE,getpid());
+  pid = getpid();
+#endif
+  CpdNotify(CPD_FREEZE,pid);
   if (CpvAccess(freezeModeFlag)) return; /*Already frozen*/
   CpvAccess(freezeModeFlag) = 1;
 #if ! CMK_BLUEGENE_CHARM
   CpdFreezeModeScheduler();
 #endif
-#endif
 }
 
 void CpdUnFreeze(void)
@@ -163,6 +165,7 @@ extern "C" int Slot_ChareOwner(void *s);
 #include <stdarg.h>
 void CpdNotify(int type, ...) {
   void *ptr; int integer, i;
+  pid_t pid=0;
   int levels=64;
   void *stackPtrs[64];
   void *sl;
@@ -175,11 +178,12 @@ void CpdNotify(int type, ...) {
   case CPD_SIGNAL:
     CmiPrintf("CPD: %d Signal %d\n",CmiMyPe(), va_arg(list, int));
     break;
-#if CMK_HAS_GETPID
   case CPD_FREEZE:
-    CmiPrintf("CPD: %d Freeze %d\n",CmiMyPe(),getpid());
-    break;
+#if CMK_HAS_GETPID
+    pid = getpid();
 #endif
+    CmiPrintf("CPD: %d Freeze %d\n",CmiMyPe(),pid);
+    break;
   case CPD_BREAKPOINT:
     CmiPrintf("CPD: %d BP %s\n",CmiMyPe(), va_arg(list, char*));
     break;