From: degomme Date: Tue, 19 Jan 2016 22:49:58 +0000 (+0100) Subject: Make all predefined MPI_Datatype const X-Git-Tag: v3_13~1196 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/7f2b5ea49487adf6b6d075435936f060617c96ad?hp=82f7f5c098d218e92e0004007406a601068b1fb5 Make all predefined MPI_Datatype const We encountered one MPI application that was using them as such and thus failing to build with SMPI. --- diff --git a/include/smpi/smpi.h b/include/smpi/smpi.h index 16e95d6ea9..4e9160e478 100644 --- a/include/smpi/smpi.h +++ b/include/smpi/smpi.h @@ -241,64 +241,64 @@ typedef struct s_smpi_mpi_info *MPI_Info; #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 @@ -686,7 +686,7 @@ typedef int MPI_Grequest_cancel_function(void *extra_state, int complete); 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; diff --git a/src/smpi/smpi_mpi_dt.c b/src/smpi/smpi_mpi_dt.c index ab2d75ba7a..bb63c6bc69 100644 --- a/src/smpi/smpi_mpi_dt.c +++ b/src/smpi/smpi_mpi_dt.c @@ -35,7 +35,7 @@ int type_keyval_id=0;//avoid collisions NULL, /* pointer on extended struct*/ \ 0 /* in_use counter */ \ }; \ -MPI_Datatype name = &mpi_##name; +const MPI_Datatype name = &mpi_##name; #define CREATE_MPI_DATATYPE_NULL(name) \ static s_smpi_mpi_datatype_t mpi_##name = { \ @@ -49,7 +49,7 @@ MPI_Datatype name = &mpi_##name; NULL, /* pointer on extended struct*/ \ 0 /* in_use counter */ \ }; \ -MPI_Datatype name = &mpi_##name; +const MPI_Datatype name = &mpi_##name; //The following are datatypes for the MPI functions MPI_MAXLOC and MPI_MINLOC. typedef struct { diff --git a/src/smpi/smpi_mpi_dt_private.h b/src/smpi/smpi_mpi_dt_private.h index f0e612fcd5..79822efded 100644 --- a/src/smpi/smpi_mpi_dt_private.h +++ b/src/smpi/smpi_mpi_dt_private.h @@ -32,7 +32,7 @@ */ #define DT_FLAG_BASIC (DT_FLAG_PREDEFINED | DT_FLAG_CONTIGUOUS | DT_FLAG_NO_GAPS | DT_FLAG_DATA | DT_FLAG_COMMITED) -extern MPI_Datatype MPI_PTR; +extern const MPI_Datatype MPI_PTR; //*****************************************************************************************