1
1

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.
Этот коммит содержится в:
Brian Barrett 2007-07-16 16:29:51 +00:00
родитель c43335d671
Коммит 6a1f876e98
2 изменённых файлов: 43 добавлений и 39 удалений

Просмотреть файл

@ -31,6 +31,40 @@
#include "osc_base_obj_convert.h" #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 { struct ompi_osc_base_convertor_t {
ompi_convertor_t convertor; ompi_convertor_t convertor;
ompi_op_t *op; ompi_op_t *op;

Просмотреть файл

@ -24,7 +24,6 @@
*/ */
#include "ompi/datatype/datatype.h" #include "ompi/datatype/datatype.h"
#include "ompi/datatype/datatype_internal.h"
#include "ompi/proc/proc.h" #include "ompi/proc/proc.h"
#include "ompi/op/op.h" #include "ompi/op/op.h"
@ -95,38 +94,9 @@ ompi_osc_base_op_create(int op_id)
* *
* @retval OMPI_SUCCESS Success * @retval OMPI_SUCCESS Success
*/ */
static inline int OMPI_DECLSPEC int ompi_osc_base_get_primitive_type_info(ompi_datatype_t *datatype,
ompi_osc_base_get_primitive_type_info(ompi_datatype_t *datatype,
ompi_datatype_t **prim_datatype, ompi_datatype_t **prim_datatype,
uint32_t *prim_count) 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;
}
/** /**
@ -139,7 +109,7 @@ ompi_osc_base_get_primitive_type_info(ompi_datatype_t *datatype,
* @retval OMPI_SUCCESS Success * @retval OMPI_SUCCESS Success
* @retval OMPI_ERR_NOT_SUPPORTED Called with op == ompi_mpi_op_replace * @retval OMPI_ERR_NOT_SUPPORTED Called with op == ompi_mpi_op_replace
*/ */
int ompi_osc_base_process_op(void *outbuf, OMPI_DECLSPEC int ompi_osc_base_process_op(void *outbuf,
void *inbuf, void *inbuf,
size_t inbuflen, size_t inbuflen,
struct ompi_datatype_t *datatype, struct ompi_datatype_t *datatype,