00001 #if CMK_FAULT_EVAC 00002 00003 #ifndef _CKEVACUATION_H 00004 #define _CKEVACUATION_H 00005 00006 00007 struct evacMsg{ 00008 char header[CmiMsgHeaderSizeBytes]; 00009 int pe; //processor that is being evacuated 00010 int remainingElements; // number of array elements that still exist on that processor 00011 }; 00012 00013 CpvExtern(char *,_validProcessors); 00014 extern int _ckEvacBcastIdx; 00015 extern int _ckAckEvacIdx; 00016 CkpvExtern(char ,startedEvac); 00017 extern int allowMessagesOnly; 00018 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 00019 00020 void _ckEvacBcast(struct evacMsg *); 00021 void _ckAckEvac(struct evacMsg *); 00022 void CkDecideEvacPe(); 00023 int getNextPE(const CkArrayIndex &i); 00024 int getNextSerializer(); 00025 int CkNumValidPes(); 00026 void CkStopScheduler(); 00027 void CkEvacuatedElement(); 00028 void CkEmmigrateElement(void *arg); 00029 void CkClearAllArrayElementsCPP(); 00030 00031 class CkElementEvacuate : public CkLocIterator { 00032 int lastPE; 00033 public: 00034 CkElementEvacuate(){lastPE=0;}; 00035 void addLocation(CkLocation &loc); 00036 }; 00037 00038 class CkElementInformHome : public CkLocIterator { 00039 void addLocation(CkLocation &loc); 00040 }; 00041 00042 #endif //_CK_EVACUATION_H 00043 00044 #endif // CMK_FAULT_EVAC