diff --git a/ompi/mca/mpool/base/Makefile.am b/ompi/mca/mpool/base/Makefile.am index a12b2d5f28..840c531b52 100644 --- a/ompi/mca/mpool/base/Makefile.am +++ b/ompi/mca/mpool/base/Makefile.am @@ -30,7 +30,8 @@ libmca_mpool_base_la_SOURCES = \ mpool_base_close.c \ mpool_base_init.c \ mpool_base_lookup.c \ - mpool_base_alloc.c + mpool_base_alloc.c \ + mpool_base_mem_cb.c # Conditionally install the header files diff --git a/ompi/mca/mpool/base/mpool_base_mem_cb.c b/ompi/mca/mpool/base/mpool_base_mem_cb.c new file mode 100644 index 0000000000..b05d5f4a19 --- /dev/null +++ b/ompi/mca/mpool/base/mpool_base_mem_cb.c @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2004-2005 The Trustees of Indiana University. + * All rights reserved. + * Copyright (c) 2004-2005 The Trustees of the University of Tennessee. + * All rights reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ +/** + * @file + */ +#include "mpool_base_mem_cb.h" +#include "base.h" + +/* + * memory hook callback, called when memory is free'd out from under us + */ +void mca_mpool_base_mem_cb(void* base, size_t size, void* cbdata){ + + uint32_t i, cnt; + ompi_pointer_array_t regs; + mca_mpool_base_registration_t* reg; + mca_mpool_base_selected_module_t* current; + int rc; + opal_list_item_t* item; + + for(item = opal_list_get_first(&mca_mpool_base_modules); + item != opal_list_get_end(&mca_mpool_base_modules); + item = opal_list_get_next(item)) { + + current = (mca_mpool_base_selected_module_t*) item; + if(NULL != current->mpool_module->mpool_find) { + rc = current->mpool_module->mpool_find( + current->mpool_module, + base, + size, + ®s, + &cnt + ); + if(OMPI_SUCCESS != rc) { + return; + } + if(0 < cnt) { + for(i = 0; i < cnt; i++) { + reg = (mca_mpool_base_registration_t*) + ompi_pointer_array_get_item(®s, i); + + rc = current->mpool_module->mpool_deregister( + current->mpool_module, + reg + ); + if(OMPI_SUCCESS != rc) { + return; + } + } + } + } + } +} + + + diff --git a/ompi/mca/mpool/base/mpool_base_mem_cb.h b/ompi/mca/mpool/base/mpool_base_mem_cb.h index 1718914b0a..308f01346f 100644 --- a/ompi/mca/mpool/base/mpool_base_mem_cb.h +++ b/ompi/mca/mpool/base/mpool_base_mem_cb.h @@ -35,47 +35,7 @@ extern "C" { /* * memory hook callback, called when memory is free'd out from under us */ -static void mca_mpool_base_mem_cb(void* base, size_t size, void* cbdata){ - uint32_t i, cnt; - ompi_pointer_array_t regs; - mca_mpool_base_registration_t* reg; - mca_mpool_base_selected_module_t* current; - int rc; - opal_list_item_t* item; - - for(item = opal_list_get_first(&mca_mpool_base_modules); - item != opal_list_get_end(&mca_mpool_base_modules); - item = opal_list_get_next(item)) { - - current = (mca_mpool_base_selected_module_t*) item; - if(NULL != current->mpool_module->mpool_find) { - rc = current->mpool_module->mpool_find( - current->mpool_module, - base, - size, - ®s, - &cnt - ); - if(OMPI_SUCCESS != rc) { - return; - } - if(0 < cnt) { - for(i = 0; i < cnt; i++) { - reg = (mca_mpool_base_registration_t*) - ompi_pointer_array_get_item(®s, i); - - rc = current->mpool_module->mpool_deregister( - current->mpool_module, - reg - ); - if(OMPI_SUCCESS != rc) { - return; - } - } - } - } - } -} + void mca_mpool_base_mem_cb(void* base, size_t size, void* cbdata); #if defined(c_plusplus) || defined(__cplusplus) }