1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #ifndef _MPIJAVA_H_
22 #define _MPIJAVA_H_
23
24 #include "mpi.h"
25 #include "opal/class/opal_free_list.h"
26
27 typedef struct {
28 jfieldID CommHandle;
29 jfieldID GroupHandle;
30 jclass CartParmsClass;
31 jmethodID CartParmsInit;
32 jclass ShiftParmsClass;
33 jmethodID ShiftParmsInit;
34 jclass VersionClass;
35 jmethodID VersionInit;
36 jclass CountClass;
37 jmethodID CountInit;
38 jclass GraphParmsClass;
39 jmethodID GraphParmsInit;
40 jclass DistGraphNeighborsClass;
41 jmethodID DistGraphNeighborsInit;
42 jfieldID DatatypeHandle;
43 jfieldID DatatypeBaseType;
44 jfieldID DatatypeBaseSize;
45 jfieldID MessageHandle;
46 jfieldID OpHandle;
47 jfieldID OpCommute;
48 jmethodID OpCall;
49 jfieldID ReqHandle;
50 jclass StatusClass;
51 jfieldID StatusData;
52 jclass ExceptionClass;
53 jmethodID ExceptionInit;
54 jclass IntegerClass;
55 jmethodID IntegerValueOf;
56 jclass LongClass;
57 jmethodID LongValueOf;
58 } ompi_java_globals_t;
59
60 extern ompi_java_globals_t ompi_java;
61
62 typedef struct ompi_java_buffer_t
63 {
64 opal_free_list_item_t super;
65 void *buffer;
66 } ompi_java_buffer_t;
67
68 OMPI_DECLSPEC OBJ_CLASS_DECLARATION(ompi_java_buffer_t);
69
70 void* ompi_java_getArrayCritical(void** bufBase, JNIEnv *env,
71 jobject buf, int offset);
72
73 void* ompi_java_getDirectBufferAddress(JNIEnv *env, jobject buf);
74
75
76 void ompi_java_getReadPtr(
77 void **ptr, ompi_java_buffer_t **item, JNIEnv *env, jobject buf,
78 jboolean db, int offset, int count, MPI_Datatype type, int baseType);
79
80
81
82
83 void ompi_java_getReadPtrRank(
84 void **ptr, ompi_java_buffer_t **item, JNIEnv *env,
85 jobject buf, jboolean db, int offset, int count, int size,
86 int rank, MPI_Datatype type, int baseType);
87
88
89
90
91
92 void ompi_java_getReadPtrv(
93 void **ptr, ompi_java_buffer_t **item, JNIEnv *env,
94 jobject buf, jboolean db, int off, int *counts, int *displs,
95 int size, int rank, MPI_Datatype type, int baseType);
96
97
98 void ompi_java_releaseReadPtr(
99 void *ptr, ompi_java_buffer_t *item, jobject buf, jboolean db);
100
101
102 void ompi_java_getWritePtr(
103 void **ptr, ompi_java_buffer_t **item, JNIEnv *env,
104 jobject buf, jboolean db, int count, MPI_Datatype type);
105
106
107
108 void ompi_java_getWritePtrv(
109 void **ptr, ompi_java_buffer_t **item, JNIEnv *env, jobject buf,
110 jboolean db, int *counts, int *displs, int size, MPI_Datatype type);
111
112
113
114 void ompi_java_releaseWritePtr(
115 void *ptr, ompi_java_buffer_t *item, JNIEnv *env, jobject buf,
116 jboolean db, int offset, int count, MPI_Datatype type, int baseType);
117
118
119
120
121 void ompi_java_releaseWritePtrv(
122 void *ptr, ompi_java_buffer_t *item, JNIEnv *env,
123 jobject buf, jboolean db, int off, int *counts, int *displs,
124 int size, MPI_Datatype type, int baseType);
125
126 void ompi_java_setStaticLongField(JNIEnv *env, jclass c,
127 char *field, jlong value);
128
129 void ompi_java_setIntField(JNIEnv *env, jclass c, jobject obj,
130 char *field, jint value);
131
132 jobject ompi_java_Integer_valueOf(JNIEnv *env, jint i);
133 jobject ompi_java_Long_valueOf(JNIEnv *env, jlong i);
134
135 void ompi_java_getIntArray(
136 JNIEnv *env, jintArray array, jint **jptr, int **cptr);
137 void ompi_java_releaseIntArray(
138 JNIEnv *env, jintArray array, jint *jptr, int *cptr);
139 void ompi_java_forgetIntArray(
140 JNIEnv *env, jintArray array, jint *jptr, int *cptr);
141
142 void ompi_java_getDatatypeArray(
143 JNIEnv *env, jlongArray array, jlong **jptr, MPI_Datatype **cptr);
144 void ompi_java_forgetDatatypeArray(
145 JNIEnv *env, jlongArray array, jlong *jptr, MPI_Datatype *cptr);
146
147 void ompi_java_getBooleanArray(
148 JNIEnv *env, jbooleanArray array, jboolean **jptr, int **cptr);
149 void ompi_java_releaseBooleanArray(
150 JNIEnv *env, jbooleanArray array, jboolean *jptr, int *cptr);
151 void ompi_java_forgetBooleanArray(
152 JNIEnv *env, jbooleanArray array, jboolean *jptr, int *cptr);
153
154 void ompi_java_getPtrArray(
155 JNIEnv *env, jlongArray array, jlong **jptr, void ***cptr);
156 void ompi_java_releasePtrArray(
157 JNIEnv *env, jlongArray array, jlong *jptr, void **cptr);
158
159 jboolean ompi_java_exceptionCheck(JNIEnv *env, int rc);
160
161 void* ompi_java_attrSet(JNIEnv *env, jbyteArray jval);
162 jbyteArray ompi_java_attrGet(JNIEnv *env, void *cval);
163 int ompi_java_attrCopy(void *attrValIn, void *attrValOut, int *flag);
164 int ompi_java_attrDelete(void *attrVal);
165
166 MPI_Op ompi_java_op_getHandle(
167 JNIEnv *env, jobject jOp, jlong hOp, int baseType);
168
169 jobject ompi_java_status_new(JNIEnv *env, MPI_Status *status);
170 jobject ompi_java_status_newIndex(JNIEnv *env, MPI_Status *status, int index);
171
172 void ompi_java_status_set(
173 JNIEnv *env, jlongArray jData, MPI_Status *status);
174 void ompi_java_status_setIndex(
175 JNIEnv *env, jlongArray jData, MPI_Status *status, int index);
176
177 #endif