
00001 /* 00002 FAULT_EVAC 00003 Resuing this file shamelessly for the Migrate away all 00004 objects project 00005 */ 00006 00007 #ifndef _CKEVACUATION_H 00008 #define _CKEVACUATION_H 00009 00010 00011 00012 struct evacMsg{ 00013 char header[CmiMsgHeaderSizeBytes]; 00014 int pe; //processor that is being evacuated 00015 int remainingElements; // number of array elements that still exist on that processor 00016 }; 00017 00018 CpvCExtern(char *,_validProcessors); 00019 extern int _ckEvacBcastIdx; 00020 extern int _ckAckEvacIdx; 00021 CkpvExtern(char ,startedEvac); 00022 extern int allowMessagesOnly; 00023 extern int evacuate; //Evacuate flag, set to 0 normally. set to 1 when the SIGUSR1 signal is received. after the startedEvac flag has been set it is set to 2 00024 00025 void _ckEvacBcast(struct evacMsg *); 00026 void _ckAckEvac(struct evacMsg *); 00027 void CkDecideEvacPe(); 00028 int getNextPE(const CkArrayIndex &i); 00029 int getNextSerializer(); 00030 int CkNumValidPes(); 00031 void CkStopScheduler(); 00032 void CkEvacuatedElement(); 00033 void CkEmmigrateElement(void *arg); 00034 void CkClearAllArrayElementsCPP(); 00035 00036 class CkElementEvacuate : public CkLocIterator { 00037 int lastPE; 00038 public: 00039 CkElementEvacuate(){lastPE=0;}; 00040 void addLocation(CkLocation &loc); 00041 }; 00042 00043 class CkElementInformHome : public CkLocIterator { 00044 void addLocation(CkLocation &loc); 00045 }; 00046 00047 00048 #endif //_CK_CHECKPOINT_H
1.5.5