jobject ompi_java_status_new(JNIEnv *env, MPI_Status *status) { jlongArray jData = (*env)->NewLongArray(env, 6); ompi_java_status_set(env, jData, status); jobject jStatus = (*env)->AllocObject(env, ompi_java.StatusClass); (*env)->SetObjectField(env, jStatus, ompi_java.StatusData, jData); return jStatus; }
JNIEXPORT void JNICALL Java_mpi_File_writeOrderedEnd( JNIEnv *env, jobject jthis, jlong fh, jobject buf, jlongArray stat) { MPI_Status status; void *ptr = (*env)->GetDirectBufferAddress(env, buf); int rc = MPI_File_write_ordered_end((MPI_File)fh, ptr, &status); ompi_java_exceptionCheck(env, rc); ompi_java_status_set(env, stat, &status); }
JNIEXPORT void JNICALL Java_mpi_File_readAtAllEnd( JNIEnv *env, jobject jthis, jlong fh, jobject buf, jlongArray stat) { MPI_Status status; void *ptr = (*env)->GetDirectBufferAddress(env, buf); int rc = MPI_File_read_at_all_end((MPI_File)fh, ptr, &status); if(!ompi_java_exceptionCheck(env, rc)) ompi_java_status_set(env, stat, &status); }
JNIEXPORT jlong JNICALL Java_mpi_Request_waitStatus( JNIEnv *env, jobject jthis, jlong handle, jlongArray stat) { MPI_Request req = (MPI_Request)handle; MPI_Status status; int rc = MPI_Wait(&req, &status); ompi_java_exceptionCheck(env, rc); ompi_java_status_set(env, stat, &status); return (jlong)req; }
JNIEXPORT jlong JNICALL Java_mpi_Message_mProbe( JNIEnv *env, jobject jthis, jint source, jint tag, jlong jComm, jlongArray jStatus) { MPI_Comm comm = (MPI_Comm)jComm; MPI_Message message; MPI_Status status; int rc = MPI_Mprobe(source, tag, comm, &message, &status); ompi_java_exceptionCheck(env, rc); ompi_java_status_set(env, jStatus, &status); return (jlong)message; }
JNIEXPORT void JNICALL Java_mpi_File_writeOrdered( JNIEnv *env, jobject jthis, jlong fh, jobject buf, jboolean db, jint off, jint count, jlong jType, jint bType, jlongArray stat) { MPI_Datatype type = (MPI_Datatype)jType; void *ptr; ompi_java_buffer_t *item; ompi_java_getReadPtr(&ptr, &item, env, buf, db, off, count, type, bType); MPI_Status status; int rc = MPI_File_write_ordered((MPI_File)fh, ptr, count, type, &status); ompi_java_exceptionCheck(env, rc); ompi_java_releaseReadPtr(ptr, item, buf, db); ompi_java_status_set(env, stat, &status); }
JNIEXPORT void JNICALL Java_mpi_File_readAll( JNIEnv *env, jobject jthis, jlong fh, jobject buf, jboolean db, jint off, jint count, jlong jType, jint bType, jlongArray stat) { jboolean exception; MPI_Datatype type = (MPI_Datatype)jType; void *ptr; ompi_java_buffer_t *item; ompi_java_getWritePtr(&ptr, &item, env, buf, db, count, type); MPI_Status status; int rc = MPI_File_read_all((MPI_File)fh, ptr, count, type, &status); exception = ompi_java_exceptionCheck(env, rc); ompi_java_releaseWritePtr(ptr, item, env, buf, db, off, count, type, bType); if(!exception) ompi_java_status_set(env, stat, &status); }
JNIEXPORT jlong JNICALL Java_mpi_Message_mRecv( JNIEnv *env, jobject jthis, jlong jMessage, jobject buf, jboolean db, jint off, jint count, jlong jType, jint bType, jlongArray jStatus) { MPI_Message message = (MPI_Message)jMessage; MPI_Datatype type = (MPI_Datatype)jType; void *ptr; ompi_java_buffer_t *item; ompi_java_getWritePtr(&ptr, &item, env, buf, db, count, type); MPI_Status status; int rc = MPI_Mrecv(ptr, count, type, &message, &status); ompi_java_exceptionCheck(env, rc); ompi_java_status_set(env, jStatus, &status); ompi_java_releaseWritePtr(ptr, item, env, buf, db, off, count, type, bType); return (jlong)message; }
jlongArray ompi_java_status_new(JNIEnv *env, MPI_Status *status) { jlongArray jData = (*env)->NewLongArray(env, 6); ompi_java_status_set(env, jData, status); return jData; }