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 extern "C" CkFuture CkCreateFuture(void);
00021 extern "C" void CkSendToFuture(CkFuture fut, void *msg);
00022 extern "C" void* CkWaitFuture(CkFuture futNum);
00023 extern "C" void CkReleaseFuture(CkFuture futNum);
00024 extern "C" int CkProbeFuture(CkFuture futNum);
00025
00026 extern "C" void* CkRemoteCall(int eIdx, void *msg,const CkChareID *chare);
00027 extern "C" void* CkRemoteBranchCall(int eIdx, void *msg, CkGroupID gID, int pe);
00028 extern "C" void* CkRemoteNodeBranchCall(int eIdx, void *msg, CkGroupID gID, int node);
00029 extern "C" CkFutureID CkRemoteCallAsync(int eIdx, void *msg, const CkChareID *chare);
00030 extern "C" CkFutureID CkRemoteBranchCallAsync(int eIdx, void *msg, CkGroupID gID, int pe);
00031 extern "C" CkFutureID CkRemoteNodeBranchCallAsync(int eIdx, void *msg, CkGroupID gID, int node);
00032
00033 extern "C" void* CkWaitFutureID(CkFutureID futNum);
00034 extern "C" void CkWaitVoidFuture(CkFutureID futNum);
00035 extern "C" void CkReleaseFutureID(CkFutureID futNum);
00036 extern "C" int CkProbeFutureID(CkFutureID futNum);
00037 extern "C" void CkSendToFutureID(CkFutureID futNum, void *msg, int pe);
00038 extern "C" CkFutureID CkCreateAttachedFuture(void *msg);
00039
00040
00041 struct CkArrayID;
00042
00043 extern "C" CkFutureID CkCreateAttachedFutureSend(void *msg, int ep, struct CkArrayID id, CkArrayIndex idx,
00044 void(*fptr)(struct CkArrayID, CkArrayIndex,void*,int,int),int size CK_MSGOPTIONAL);
00045
00046
00047 extern "C" void *CkWaitReleaseFuture(CkFutureID futNum);
00048
00049 extern "C" void _futuresModuleInit(void);
00050
00051 #endif