int32_t ompi_datatype_finalize( void ) { /* As the synonyms are just copies of the internal data we should not free them. * Anyway they are over the limit of OMPI_DATATYPE_MPI_MAX_PREDEFINED so they will never get freed. */ /* As they are statically allocated they cannot be released. * XXX But we can call OBJ_DESTRUCT, just to free all internally allocated ressources. */ #if 0 int i; for( i = 0; i < OMPI_DATATYPE_MAX_PREDEFINED; i++ ) { OBJ_DESTRUCT( ompi_datatype_basicDatatypes[i] ); } #endif /* 0 */ /* Get rid of the Fortran2C translation table */ OBJ_DESTRUCT(&ompi_datatype_f_to_c_table); #if defined(VERBOSE) if( ompi_datatype_dfd != -1 ) opal_output_close( ompi_datatype_dfd ); ompi_datatype_dfd = -1; #endif /* VERBOSE */ /* release the local convertors (external32 and local) */ ompi_datatype_default_convertors_fini(); opal_datatype_finalize(); return OMPI_SUCCESS; }
int32_t ompi_datatype_finalize( void ) { /* As the synonyms are just copies of the internal data we should not free them. * Anyway they are over the limit of OMPI_DATATYPE_MPI_MAX_PREDEFINED so they will never get freed. */ /* As they are statically allocated they cannot be released. * But we can call OBJ_DESTRUCT, just to free all internally allocated ressources. */ for( int i = 0; i < ompi_mpi_count.dt.d_f_to_c_index; i++ ) { opal_datatype_t* datatype = (opal_datatype_t*)opal_pointer_array_get_item(&ompi_datatype_f_to_c_table, i ); OBJ_DESTRUCT(datatype); } /* Get rid of the Fortran2C translation table */ OBJ_DESTRUCT(&ompi_datatype_f_to_c_table); #if defined(VERBOSE) if( ompi_datatype_dfd != -1 ) opal_output_close( ompi_datatype_dfd ); ompi_datatype_dfd = -1; #endif /* VERBOSE */ /* release the local convertors (external32 and local) */ ompi_datatype_default_convertors_fini(); opal_datatype_finalize(); return OMPI_SUCCESS; }