From: Gabriel Corona Date: Mon, 7 Dec 2015 14:58:27 +0000 (+0100) Subject: [simix] Fix SMPI+MSG X-Git-Tag: v3_13~1480^2 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/422ebe38da1dd2d6608e71a366e0d9af40bea830 [simix] Fix SMPI+MSG --- diff --git a/include/simgrid/simix.hpp b/include/simgrid/simix.hpp index 8888fb81ce..99f476f3d9 100644 --- a/include/simgrid/simix.hpp +++ b/include/simgrid/simix.hpp @@ -71,6 +71,10 @@ public: { return this->process_; } + void set_cleanup(void_pfn_smxprocess_t cleanup) + { + cleanup_func_ = cleanup; + } // Virtual methods virtual ~Context(); diff --git a/src/simix/Context.cpp b/src/simix/Context.cpp index 4f65be7b9a..fbfffc9688 100644 --- a/src/simix/Context.cpp +++ b/src/simix/Context.cpp @@ -10,6 +10,12 @@ #include +void SIMIX_process_set_cleanup_function( + smx_process_t process, void_pfn_smxprocess_t cleanup) +{ + process->context->set_cleanup(cleanup); +} + namespace simgrid { namespace simix { diff --git a/src/simix/smx_private.h b/src/simix/smx_private.h index 4ce0289403..f161b9a23a 100644 --- a/src/simix/smx_private.h +++ b/src/simix/smx_private.h @@ -242,6 +242,10 @@ XBT_PUBLIC(int) SIMIX_process_get_maxpid(void); XBT_PRIVATE void SIMIX_post_create_environment(void); +// FIXME, Dirty hack for SMPI+MSG +XBT_PRIVATE void SIMIX_process_set_cleanup_function( + smx_process_t process, void_pfn_smxprocess_t cleanup); + SG_END_DECL() #endif diff --git a/src/smpi/smpi_global.c b/src/smpi/smpi_global.c index 23b18266f6..400132300b 100644 --- a/src/smpi/smpi_global.c +++ b/src/smpi/smpi_global.c @@ -79,7 +79,7 @@ void smpi_process_init(int *argc, char ***argv) if (argc && argv) { proc = SIMIX_process_self(); //FIXME: dirty cleanup method to avoid using msg cleanup functions on these processes when using MSG+SMPI - // proc->context->cleanup_func=SIMIX_process_cleanup; + SIMIX_process_set_cleanup_function(proc, SIMIX_process_cleanup); char* instance_id = (*argv)[1]; int rank = atoi((*argv)[2]); index = smpi_process_index_of_smx_process(proc);