00001 00010 00011 #define PERSIST_BUFFERS_NUM 2 00012 00013 typedef struct _PersistentSendsTable { 00014 int destPE; 00015 int sizeMax; 00016 PersistentHandle destHandle; 00017 void *destAddress[PERSIST_BUFFERS_NUM]; 00018 void *destSizeAddress[PERSIST_BUFFERS_NUM]; 00019 void *messageBuf; 00020 int messageSize; 00021 char used; 00022 } PersistentSendsTable; 00023 00024 typedef struct _PersistentReceivesTable { 00025 void *messagePtr[PERSIST_BUFFERS_NUM]; /* preallocated message buffer of size "sizeMax" */ 00026 unsigned int *recvSizePtr[PERSIST_BUFFERS_NUM]; /* pointer to the size */ 00027 int sizeMax; 00028 struct _PersistentReceivesTable *prev, *next; 00029 } PersistentReceivesTable; 00030 00031 extern PersistentReceivesTable *persistentReceivesTableHead; 00032 extern PersistentReceivesTable *persistentReceivesTableTail; 00033 00034 extern PersistentHandle *phs; 00035 extern int phsSize; 00036 00037 void *PerAlloc(int size); 00038 void PerFree(char *msg); 00039 void CmiSendPersistentMsg(PersistentHandle h, int destPE, int size, void *m); 00040 int PumpPersistent(); 00041 void swapSendSlotBuffers(PersistentSendsTable *slot); 00042 void swapRecvSlotBuffers(PersistentReceivesTable *slot); 00043 void setupRecvSlot(PersistentReceivesTable *slot, int maxBytes); 00044
1.5.1