00001 #ifndef _CMIDIRECT_H_
00002 #define _CMIDIRECT_H_
00003
00004
00005
00006 #ifdef CMK_BLUEGENEP
00007 typedef struct {
00008 CmiFloat8 space[2];
00009 } cmkquad;
00010
00011 #endif
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifdef CMK_BLUEGENEP
00021 #include "dcmf.h"
00022 #elif CMK_CONVERSE_GEMINI_UGNI
00023 #include "gni_pub.h"
00024 #endif
00025 typedef struct infiDirectUserHandle{
00026 int handle;
00027 #ifdef CMK_BLUEGENEP
00028 int senderNode;
00029 int recverNode;
00030 void *recverBuf;
00031 int recverBufSize;
00032 void *senderBuf;
00033 void (*callbackFnPtr)(void *);
00034 void *callbackData;
00035 void *DCMF_notify_buf;
00036 DCMF_Request_t *DCMF_rq_trecv;
00037 DCMF_Request_t *DCMF_rq_tsend;
00038 DCMF_Memregion_t DCMF_recverMemregion;
00039 DCMF_Memregion_t DCMF_senderMemregion;
00040 DCMF_Callback_t DCMF_notify_cb;
00041 #elif CMK_CONVERSE_GEMINI_UGNI
00042 int localNode;
00043 int remoteRank;
00044 int remoteNode;
00045 void *remoteBuf;
00046 void *remoteHandler;
00047 int transSize;
00048 void *localBuf;
00049 void (*callbackFnPtr)(void *);
00050 void *callbackData;
00051 gni_mem_handle_t localMdh;
00052 gni_mem_handle_t remoteMdh;
00053 #else
00054 int senderNode;
00055 int recverNode;
00056 void *recverBuf;
00057 int recverBufSize;
00058 char recverKey[64];
00059 #endif
00060 double initialValue;
00061 }CmiDirectUserHandle;
00062
00063 #ifdef CMK_CONVERSE_GEMINI_UGNI
00064 typedef gni_mem_handle_t CmiDirectMemoryHandler;
00065 CmiDirectMemoryHandler CmiDirect_registerMemory(void *buff, int size);
00066 struct infiDirectUserHandle CmiDirect_createHandle_mem(CmiDirectMemoryHandler *mem_hndl, void *recvBuf, int recvBufSize, void (*callbackFnPtr)(void *), void *callbackData);
00067 void CmiDirect_assocLocalBuffer_mem(struct infiDirectUserHandle *userHandle, CmiDirectMemoryHandler *mem_hndl, void *sendBuf,int sendBufSize);
00068 void CmiDirect_saveHandler(CmiDirectUserHandle* h, void *ptr);
00069 #endif
00070
00071
00072 #ifdef __cplusplus
00073 extern "C" {
00074 #endif
00075
00078 struct infiDirectUserHandle CmiDirect_createHandle(int senderNode,void *recvBuf, int recvBufSize, void (*callbackFnPtr)(void *), void *callbackData,double initialValue);
00079
00080
00081
00082
00083 void CmiDirect_assocLocalBuffer(struct infiDirectUserHandle *userHandle,void *sendBuf,int sendBufSize);
00084
00085
00086
00087 void CmiDirect_deassocLocalBuffer(struct infiDirectUserHandle *userHandle);
00088
00089
00090 void CmiDirect_destroyHandle(struct infiDirectUserHandle *userHandle);
00091
00092
00093
00094
00095 void CmiDirect_put(struct infiDirectUserHandle *userHandle);
00096
00097
00098
00099
00100
00101 void CmiDirect_get(struct infiDirectUserHandle *userHandle);
00102
00103
00104 void CmiDirect_ready(struct infiDirectUserHandle *userHandle);
00105
00106
00107 void CmiDirect_readyMark(struct infiDirectUserHandle *userHandle);
00108
00109
00110 void CmiDirect_readyPollQ(struct infiDirectUserHandle *userHandle);
00111 #ifdef __cplusplus
00112 }
00113 #endif
00114
00115 #endif