00001 #ifndef _CKFUTURES_H_
00002 #define _CKFUTURES_H_
00003
00004 #include "CkFutures.decl.h"
00005
00013 typedef int CkFutureID;
00014 typedef struct _CkFuture {
00015 CkFutureID id;
00016 int pe;
00017 } CkFuture;
00018 PUPbytes(CkFuture)
00019
00020
00021 struct CkArrayID;
00022
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026
00027 CkFuture CkCreateFuture(void);
00028 void CkSendToFuture(CkFuture fut, void *msg);
00029 void* CkWaitFuture(CkFuture futNum);
00030 void CkReleaseFuture(CkFuture futNum);
00031 int CkProbeFuture(CkFuture futNum);
00032
00033 void* CkRemoteCall(int eIdx, void *msg,const CkChareID *chare);
00034 void* CkRemoteBranchCall(int eIdx, void *msg, CkGroupID gID, int pe);
00035 void* CkRemoteNodeBranchCall(int eIdx, void *msg, CkGroupID gID, int node);
00036 CkFutureID CkRemoteCallAsync(int eIdx, void *msg, const CkChareID *chare);
00037 CkFutureID CkRemoteBranchCallAsync(int eIdx, void *msg, CkGroupID gID, int pe);
00038 CkFutureID CkRemoteNodeBranchCallAsync(int eIdx, void *msg, CkGroupID gID, int node);
00039
00040 void* CkWaitFutureID(CkFutureID futNum);
00041 void CkWaitVoidFuture(CkFutureID futNum);
00042 void CkReleaseFutureID(CkFutureID futNum);
00043 int CkProbeFutureID(CkFutureID futNum);
00044 void CkSendToFutureID(CkFutureID futNum, void *msg, int pe);
00045 CkFutureID CkCreateAttachedFuture(void *msg);
00046
00047 CkFutureID CkCreateAttachedFutureSend(void *msg, int ep, struct CkArrayID id, CkArrayIndex idx,
00048 void(*fptr)(struct CkArrayID, CkArrayIndex,void*,int,int),int size CK_MSGOPTIONAL);
00049
00050
00051 void *CkWaitReleaseFuture(CkFutureID futNum);
00052
00053 void _futuresModuleInit(void);
00054
00055 #ifdef __cplusplus
00056 }
00057 #endif
00058
00059 #endif