From 6a1f876e98225e685a18d69a66748192454b937d Mon Sep 17 00:00:00 2001 From: Brian Barrett Date: Mon, 16 Jul 2007 16:29:51 +0000 Subject: [PATCH] Don't inline this function so that we can access the predefined datatype array even when visibility is turned on This commit was SVN r15444. --- ompi/mca/osc/base/osc_base_obj_convert.c | 34 +++++++++++++++++ ompi/mca/osc/base/osc_base_obj_convert.h | 48 +++++------------------- 2 files changed, 43 insertions(+), 39 deletions(-) diff --git a/ompi/mca/osc/base/osc_base_obj_convert.c b/ompi/mca/osc/base/osc_base_obj_convert.c index 5ff5e29853..5eac933f04 100644 --- a/ompi/mca/osc/base/osc_base_obj_convert.c +++ b/ompi/mca/osc/base/osc_base_obj_convert.c @@ -31,6 +31,40 @@ #include "osc_base_obj_convert.h" +int +ompi_osc_base_get_primitive_type_info(ompi_datatype_t *datatype, + ompi_datatype_t **prim_datatype, + uint32_t *prim_count) +{ + struct ompi_datatype_t *primitive_datatype = NULL; + uint32_t primitive_count; + + /* get underlying type... */ + if (ompi_ddt_is_predefined(datatype)) { + primitive_datatype = datatype; + primitive_count = 1; + } else { + int i, found_index = -1; + uint64_t mask = 1; + for (i = 0 ; i < DT_MAX_PREDEFINED ; ++i) { + if (datatype->bdt_used & mask) { + found_index = i; + break; + } + mask *= 2; + } + primitive_datatype = (ompi_datatype_t*) + ompi_ddt_basicDatatypes[found_index]; + primitive_count = datatype->nbElems; + } + + *prim_datatype = primitive_datatype; + *prim_count = primitive_count; + + return OMPI_SUCCESS; +} + + struct ompi_osc_base_convertor_t { ompi_convertor_t convertor; ompi_op_t *op; diff --git a/ompi/mca/osc/base/osc_base_obj_convert.h b/ompi/mca/osc/base/osc_base_obj_convert.h index 6fc4544000..93d3889449 100644 --- a/ompi/mca/osc/base/osc_base_obj_convert.h +++ b/ompi/mca/osc/base/osc_base_obj_convert.h @@ -24,7 +24,6 @@ */ #include "ompi/datatype/datatype.h" -#include "ompi/datatype/datatype_internal.h" #include "ompi/proc/proc.h" #include "ompi/op/op.h" @@ -95,38 +94,9 @@ ompi_osc_base_op_create(int op_id) * * @retval OMPI_SUCCESS Success */ -static inline int -ompi_osc_base_get_primitive_type_info(ompi_datatype_t *datatype, - ompi_datatype_t **prim_datatype, - uint32_t *prim_count) -{ - struct ompi_datatype_t *primitive_datatype = NULL; - uint32_t primitive_count; - - /* get underlying type... */ - if (ompi_ddt_is_predefined(datatype)) { - primitive_datatype = datatype; - primitive_count = 1; - } else { - int i, found_index = -1; - uint64_t mask = 1; - for (i = 0 ; i < DT_MAX_PREDEFINED ; ++i) { - if (datatype->bdt_used & mask) { - found_index = i; - break; - } - mask *= 2; - } - primitive_datatype = (ompi_datatype_t*) - ompi_ddt_basicDatatypes[found_index]; - primitive_count = datatype->nbElems; - } - - *prim_datatype = primitive_datatype; - *prim_count = primitive_count; - - return OMPI_SUCCESS; -} +OMPI_DECLSPEC int ompi_osc_base_get_primitive_type_info(ompi_datatype_t *datatype, + ompi_datatype_t **prim_datatype, + uint32_t *prim_count); /** @@ -139,11 +109,11 @@ ompi_osc_base_get_primitive_type_info(ompi_datatype_t *datatype, * @retval OMPI_SUCCESS Success * @retval OMPI_ERR_NOT_SUPPORTED Called with op == ompi_mpi_op_replace */ -int ompi_osc_base_process_op(void *outbuf, - void *inbuf, - size_t inbuflen, - struct ompi_datatype_t *datatype, - int count, - ompi_op_t *op); +OMPI_DECLSPEC int ompi_osc_base_process_op(void *outbuf, + void *inbuf, + size_t inbuflen, + struct ompi_datatype_t *datatype, + int count, + ompi_op_t *op); END_C_DECLS