diff --git a/ompi/errhandler/errcode-internal.c b/ompi/errhandler/errcode-internal.c index 4fc83aed933..37429f6ff81 100644 --- a/ompi/errhandler/errcode-internal.c +++ b/ompi/errhandler/errcode-internal.c @@ -55,6 +55,7 @@ static ompi_errcode_intern_t ompi_err_rma_attach_intern; static ompi_errcode_intern_t ompi_err_rma_range_intern; static ompi_errcode_intern_t ompi_err_rma_conflict_intern; static ompi_errcode_intern_t ompi_err_win_intern; +static ompi_errcode_intern_t ompi_err_rma_flavor_intern; static void ompi_errcode_intern_construct(ompi_errcode_intern_t* errcode); static void ompi_errcode_intern_destruct(ompi_errcode_intern_t* errcode); @@ -250,6 +251,14 @@ int ompi_errcode_intern_init (void) opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_win_intern.index, &ompi_err_win_intern); + OBJ_CONSTRUCT(&ompi_err_rma_flavor_intern, ompi_errcode_intern_t); + ompi_err_rma_flavor_intern.code = OMPI_ERR_RMA_FLAVOR; + ompi_err_rma_flavor_intern.mpi_code = MPI_ERR_RMA_FLAVOR; + ompi_err_rma_flavor_intern.index = pos++; + strncpy(ompi_err_rma_flavor_intern.errstring, "OMPI_ERR_RMA_FLAVOR", OMPI_MAX_ERROR_STRING); + opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_rma_flavor_intern.index, + &ompi_err_rma_flavor_intern); + ompi_errcode_intern_lastused=pos; return OMPI_SUCCESS; } @@ -279,6 +288,7 @@ int ompi_errcode_intern_finalize(void) OBJ_DESTRUCT(&ompi_err_rma_range_intern); OBJ_DESTRUCT(&ompi_err_rma_conflict_intern); OBJ_DESTRUCT(&ompi_err_win_intern); + OBJ_DESTRUCT(&ompi_err_rma_flavor_intern); OBJ_DESTRUCT(&ompi_errcodes_intern); return OMPI_SUCCESS; diff --git a/ompi/include/ompi/constants.h b/ompi/include/ompi/constants.h index 0e33ad4ca47..dbe9001baca 100644 --- a/ompi/include/ompi/constants.h +++ b/ompi/include/ompi/constants.h @@ -71,6 +71,7 @@ enum { OMPI_ERR_RMA_RANGE = OMPI_ERR_BASE - 5, OMPI_ERR_RMA_CONFLICT = OMPI_ERR_BASE - 6, OMPI_ERR_WIN = OMPI_ERR_BASE - 7, + OMPI_ERR_RMA_FLAVOR = OMPI_ERR_BASE - 8, }; #define OMPI_ERR_MAX (OMPI_ERR_BASE - 100) diff --git a/ompi/mpi/c/win_get_info.c b/ompi/mpi/c/win_get_info.c index b9f7aee2fd4..0f081a0153a 100644 --- a/ompi/mpi/c/win_get_info.c +++ b/ompi/mpi/c/win_get_info.c @@ -27,6 +27,10 @@ static const char FUNC_NAME[] = "MPI_Win_get_info"; +static void _win_info_set (ompi_info_t *info, const char *key, int set) +{ + ompi_info_set (info, key, set ? "true" : "false"); +} int MPI_Win_get_info(MPI_Win win, MPI_Info *info_used) { @@ -50,11 +54,10 @@ int MPI_Win_get_info(MPI_Win win, MPI_Info *info_used) if (OMPI_SUCCESS == ret && *info_used) { /* set standard info keys based on what the OSC module is using */ - if (win->w_flags & OMPI_WIN_NO_LOCKS) { - ompi_info_set (*info_used, "no_locks", "true"); - } else { - ompi_info_set (*info_used, "no_locks", "false"); - } + + _win_info_set (*info_used, "no_locks", win->w_flags & OMPI_WIN_NO_LOCKS); + _win_info_set (*info_used, "same_size", win->w_flags & OMPI_WIN_SAME_SIZE); + _win_info_set (*info_used, "same_disp_unit", win->w_flags & OMPI_WIN_SAME_DISP); } OMPI_ERRHANDLER_RETURN(ret, win, ret, FUNC_NAME); diff --git a/ompi/win/win.h b/ompi/win/win.h index bacd633d800..21334edb501 100644 --- a/ompi/win/win.h +++ b/ompi/win/win.h @@ -41,6 +41,8 @@ BEGIN_C_DECLS #define OMPI_WIN_FREED 0x00000001 #define OMPI_WIN_INVALID 0x00000002 #define OMPI_WIN_NO_LOCKS 0x00000004 +#define OMPI_WIN_SAME_DISP 0x00000008 +#define OMPI_WIN_SAME_SIZE 0x00000010 OMPI_DECLSPEC extern opal_pointer_array_t ompi_mpi_windows;