X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f9d7b35c174d52377ef297f786129e0340ae0778..891abf1a3579d0e378a6e1b3426e5c34b23a58ad:/src/simix/popping.cpp diff --git a/src/simix/popping.cpp b/src/simix/popping.cpp index facf8e844d..8e938734d8 100644 --- a/src/simix/popping.cpp +++ b/src/simix/popping.cpp @@ -7,10 +7,16 @@ #include "smx_private.h" #include "xbt/fifo.h" #include "xbt/xbt_os_thread.h" -#ifdef HAVE_MC +#if HAVE_MC #include "src/mc/mc_private.h" #endif +#include "src/simix/SynchroExec.hpp" +#include "src/simix/SynchroComm.hpp" +#include "src/simix/SynchroSleep.hpp" +#include "src/simix/SynchroRaw.hpp" +#include "src/simix/SynchroIo.hpp" + XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_popping, simix, "Popping part of SIMIX (transmuting from user request into kernel handlers)"); @@ -18,7 +24,7 @@ void SIMIX_simcall_answer(smx_simcall_t simcall) { if (simcall->issuer != simix_global->maestro_process){ XBT_DEBUG("Answer simcall %s (%d) issued by %s (%p)", SIMIX_simcall_name(simcall->call), (int)simcall->call, - simcall->issuer->name, simcall->issuer); + simcall->issuer->name.c_str(), simcall->issuer); simcall->issuer->simcall.call = SIMCALL_NONE; /* This check should be useless and slows everyone. Reactivate if you see something * weird in process scheduling. @@ -31,37 +37,10 @@ void SIMIX_simcall_answer(smx_simcall_t simcall) void SIMIX_simcall_exit(smx_synchro_t synchro) { - switch (synchro->type) { - - case SIMIX_SYNC_EXECUTE: - case SIMIX_SYNC_PARALLEL_EXECUTE: - SIMIX_post_host_execute(synchro); - break; - - case SIMIX_SYNC_COMMUNICATE: - SIMIX_post_comm(synchro); - break; - - case SIMIX_SYNC_SLEEP: - SIMIX_post_process_sleep(synchro); - break; - - case SIMIX_SYNC_JOIN: - SIMIX_post_process_sleep(synchro); - break; - - case SIMIX_SYNC_SYNCHRO: - SIMIX_post_synchro(synchro); - break; - - case SIMIX_SYNC_IO: - SIMIX_post_io(synchro); - break; - } + synchro->post(); } -void SIMIX_run_kernel(void* code) +void SIMIX_run_kernel(std::function const* code) { - std::function* function = (std::function*) code; - (*function)(); -} \ No newline at end of file + (*code)(); +}