root/ompi/mpi/java/c/mpiJava.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
   3  *                         University Research and Technology
   4  *                         Corporation.  All rights reserved.
   5  * Copyright (c) 2004-2005 The University of Tennessee and The University
   6  *                         of Tennessee Research Foundation.  All rights
   7  *                         reserved.
   8  * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
   9  *                         University of Stuttgart.  All rights reserved.
  10  * Copyright (c) 2004-2005 The Regents of the University of California.
  11  *                         All rights reserved.
  12  * Copyright (c) 2015      Los Alamos National Security, LLC. All rights
  13  *                         reserved.
  14  * $COPYRIGHT$
  15  *
  16  * Additional copyrights may follow
  17  *
  18  * $HEADER$
  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 /* Gets a buffer pointer for reading (copy from Java). */
  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 /* Gets a buffer pointer for reading.
  81  * It only copies from java the rank data.
  82  * 'size' is the number of processes. */
  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 /* Gets a buffer pointer for reading, but it
  89  * 'size' is the number of processes.
  90  * if rank == -1 it copies all data from Java.
  91  * if rank != -1 it only copies from Java the rank data. */
  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 /* Releases a buffer used for reading. */
  98 void ompi_java_releaseReadPtr(
  99         void *ptr, ompi_java_buffer_t *item, jobject buf, jboolean db);
 100 
 101 /* Gets a buffer pointer for writing. */
 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 /* Gets a buffer pointer for writing.
 107  * 'size' is the number of processes. */
 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 /* Releases a buffer used for writing.
 113  * It copies data to Java. */
 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 /* Releases a buffer used for writing.
 119  * It copies data to Java.
 120  * 'size' is the number of processes. */
 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 /* _MPIJAVA_H_ */

/* [<][>][^][v][top][bottom][index][help] */