#define MPI_ROOT 0
#define MPI_INFO_NULL NULL
#define MPI_COMM_TYPE_SHARED 1
-#define MPI_WIN_NULL NULL
+#define MPI_WIN_NULL ((MPI_Win)NULL)
#define MPI_VERSION 1
#define MPI_SUBVERSION 1
#define MPI_STATUS_IGNORE ((MPI_Status*)NULL)
#define MPI_STATUSES_IGNORE ((MPI_Status*)NULL)
-#define MPI_DATATYPE_NULL ((MPI_Datatype)NULL)
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_CHAR;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_SHORT;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_INT;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_LONG;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_LONG_LONG;
+#define MPI_DATATYPE_NULL ((const MPI_Datatype)NULL)
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_CHAR;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_SHORT;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_INT;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_LONG;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_LONG_LONG;
#define MPI_LONG_LONG_INT MPI_LONG_LONG
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_SIGNED_CHAR;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UNSIGNED_CHAR;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UNSIGNED_SHORT;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UNSIGNED;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UNSIGNED_LONG;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UNSIGNED_LONG_LONG;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_FLOAT;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_DOUBLE;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_LONG_DOUBLE;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_WCHAR;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_C_BOOL;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_INT8_T;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_INT16_T;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_INT32_T;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_INT64_T;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UINT8_T;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_BYTE;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UINT16_T;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UINT32_T;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UINT64_T;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_C_FLOAT_COMPLEX;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_SIGNED_CHAR;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_UNSIGNED_CHAR;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_UNSIGNED_SHORT;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_UNSIGNED;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_UNSIGNED_LONG;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_UNSIGNED_LONG_LONG;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_FLOAT;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_DOUBLE;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_LONG_DOUBLE;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_WCHAR;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_C_BOOL;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_INT8_T;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_INT16_T;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_INT32_T;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_INT64_T;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_UINT8_T;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_BYTE;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_UINT16_T;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_UINT32_T;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_UINT64_T;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_C_FLOAT_COMPLEX;
#define MPI_C_COMPLEX MPI_C_FLOAT_COMPLEX
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_C_DOUBLE_COMPLEX;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_C_LONG_DOUBLE_COMPLEX;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_AINT;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_OFFSET;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_LB;
-XBT_PUBLIC_DATA( MPI_Datatype ) MPI_UB;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_C_DOUBLE_COMPLEX;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_C_LONG_DOUBLE_COMPLEX;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_AINT;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_OFFSET;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_LB;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_UB;
//The following are datatypes for the MPI functions MPI_MAXLOC and MPI_MINLOC.
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_FLOAT_INT;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_LONG_INT;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_DOUBLE_INT;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_SHORT_INT;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_2INT;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_LONG_DOUBLE_INT;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_2FLOAT;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_2DOUBLE;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_2LONG;//only for compatibility with Fortran
-
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_REAL;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_REAL4;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_REAL8;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_REAL16;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_COMPLEX8;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_COMPLEX16;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_COMPLEX32;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_INTEGER1;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_INTEGER2;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_INTEGER4;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_INTEGER8;
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_INTEGER16;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_FLOAT_INT;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_LONG_INT;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_DOUBLE_INT;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_SHORT_INT;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_2INT;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_LONG_DOUBLE_INT;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_2FLOAT;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_2DOUBLE;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_2LONG;//only for compatibility with Fortran
+
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_REAL;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_REAL4;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_REAL8;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_REAL16;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_COMPLEX8;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_COMPLEX16;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_COMPLEX32;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_INTEGER1;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_INTEGER2;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_INTEGER4;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_INTEGER8;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_INTEGER16;
//for now we only send int values at max
#define MPI_Count int
typedef MPI_Comm_errhandler_function MPI_Comm_errhandler_fn;
#define MPI_INFO_ENV 1
-XBT_PUBLIC_DATA(MPI_Datatype) MPI_PACKED;
+XBT_PUBLIC_DATA( const MPI_Datatype ) MPI_PACKED;
XBT_PUBLIC_DATA(MPI_Errhandler*) MPI_ERRORS_RETURN;
XBT_PUBLIC_DATA(MPI_Errhandler*) MPI_ERRORS_ARE_FATAL;
XBT_PUBLIC_DATA(MPI_Errhandler*) MPI_ERRHANDLER_NULL;
// smpi functions
XBT_PUBLIC(int) smpi_global_size(void);
XBT_PUBLIC(MPI_Comm) smpi_process_comm_self(void);
+XBT_PUBLIC(void*) smpi_process_get_user_data(void);
+XBT_PUBLIC(void) smpi_process_set_user_data(void *);
/*
XBT_PUBLIC(void) smpi_exit(int);
*/