From: Arnaud Giersch Date: Fri, 4 May 2018 14:03:57 +0000 (+0200) Subject: Use kernelImmediate for simcall cond_init. X-Git-Tag: v3.20~289 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/64578ee8e932a2a7e292514c0912f50fe4299220 Use kernelImmediate for simcall cond_init. --- diff --git a/src/kernel/activity/ConditionVariableImpl.cpp b/src/kernel/activity/ConditionVariableImpl.cpp index a238297a3c..2ed96a7a28 100644 --- a/src/kernel/activity/ConditionVariableImpl.cpp +++ b/src/kernel/activity/ConditionVariableImpl.cpp @@ -16,21 +16,6 @@ static void _SIMIX_cond_wait(smx_cond_t cond, smx_mutex_t mutex, double timeout, /********************************* Condition **********************************/ -/** - * \brief Initialize a condition. - * - * Allocates and creates the data for the condition. - * It have to be called before the use of the condition. - * \return A condition - */ -smx_cond_t SIMIX_cond_init() -{ - XBT_IN("()"); - smx_cond_t cond = new simgrid::kernel::activity::ConditionVariableImpl(); - XBT_OUT(); - return cond; -} - /** * \brief Handle a condition waiting simcall without timeouts */ diff --git a/src/kernel/activity/ConditionVariableImpl.hpp b/src/kernel/activity/ConditionVariableImpl.hpp index a41fa90007..c9900d4b23 100644 --- a/src/kernel/activity/ConditionVariableImpl.hpp +++ b/src/kernel/activity/ConditionVariableImpl.hpp @@ -34,6 +34,5 @@ private: } // namespace activity } // namespace kernel } // namespace simgrid -XBT_PRIVATE smx_cond_t SIMIX_cond_init(); #endif diff --git a/src/simix/libsmx.cpp b/src/simix/libsmx.cpp index ca9ebb7d46..15c75f6845 100644 --- a/src/simix/libsmx.cpp +++ b/src/simix/libsmx.cpp @@ -451,7 +451,7 @@ void simcall_mutex_unlock(smx_mutex_t mutex) */ smx_cond_t simcall_cond_init() { - return simcall_BODY_cond_init(); + return simgrid::simix::kernelImmediate([] { return new simgrid::kernel::activity::ConditionVariableImpl(); }); } /** diff --git a/src/simix/popping_accessors.hpp b/src/simix/popping_accessors.hpp index 8ee64da4fb..ff804efddb 100644 --- a/src/simix/popping_accessors.hpp +++ b/src/simix/popping_accessors.hpp @@ -863,19 +863,6 @@ static inline void simcall_mutex_unlock__set__mutex(smx_simcall_t simcall, smx_m simgrid::simix::marshal(simcall->args[0], arg); } -static inline smx_cond_t simcall_cond_init__get__result(smx_simcall_t simcall) -{ - return simgrid::simix::unmarshal(simcall->result); -} -static inline smx_cond_t simcall_cond_init__getraw__result(smx_simcall_t simcall) -{ - return simgrid::simix::unmarshal_raw(simcall->result); -} -static inline void simcall_cond_init__set__result(smx_simcall_t simcall, smx_cond_t result) -{ - simgrid::simix::marshal(simcall->result, result); -} - static inline smx_cond_t simcall_cond_wait__get__cond(smx_simcall_t simcall) { return simgrid::simix::unmarshal(simcall->args[0]); diff --git a/src/simix/popping_bodies.cpp b/src/simix/popping_bodies.cpp index bc4c48744f..ad12e39687 100644 --- a/src/simix/popping_bodies.cpp +++ b/src/simix/popping_bodies.cpp @@ -156,13 +156,6 @@ inline static void simcall_BODY_mutex_unlock(smx_mutex_t mutex) return simcall(SIMCALL_MUTEX_UNLOCK, mutex); } -inline static smx_cond_t simcall_BODY_cond_init() -{ - if (0) /* Go to that function to follow the code flow through the simcall barrier */ - SIMIX_cond_init(); - return simcall(SIMCALL_COND_INIT); -} - inline static void simcall_BODY_cond_wait(smx_cond_t cond, smx_mutex_t mutex) { if (0) /* Go to that function to follow the code flow through the simcall barrier */ diff --git a/src/simix/popping_enum.h b/src/simix/popping_enum.h index e47114f174..7305834776 100644 --- a/src/simix/popping_enum.h +++ b/src/simix/popping_enum.h @@ -36,7 +36,6 @@ typedef enum { SIMCALL_MUTEX_LOCK, SIMCALL_MUTEX_TRYLOCK, SIMCALL_MUTEX_UNLOCK, - SIMCALL_COND_INIT, SIMCALL_COND_WAIT, SIMCALL_COND_WAIT_TIMEOUT, SIMCALL_SEM_ACQUIRE, diff --git a/src/simix/popping_generated.cpp b/src/simix/popping_generated.cpp index 6511ad696b..3a7ae4223b 100644 --- a/src/simix/popping_generated.cpp +++ b/src/simix/popping_generated.cpp @@ -45,7 +45,6 @@ const char* simcall_names[] = { "SIMCALL_MUTEX_LOCK", "SIMCALL_MUTEX_TRYLOCK", "SIMCALL_MUTEX_UNLOCK", - "SIMCALL_COND_INIT", "SIMCALL_COND_WAIT", "SIMCALL_COND_WAIT_TIMEOUT", "SIMCALL_SEM_ACQUIRE", @@ -143,11 +142,6 @@ case SIMCALL_MUTEX_UNLOCK: SIMIX_simcall_answer(simcall); break; -case SIMCALL_COND_INIT: - simgrid::simix::marshal(simcall->result, SIMIX_cond_init()); - SIMIX_simcall_answer(simcall); - break; - case SIMCALL_COND_WAIT: simcall_HANDLER_cond_wait(simcall, simgrid::simix::unmarshal(simcall->args[0]), simgrid::simix::unmarshal(simcall->args[1])); break; diff --git a/src/simix/simcalls.in b/src/simix/simcalls.in index af411eff3c..e637b58dcc 100644 --- a/src/simix/simcalls.in +++ b/src/simix/simcalls.in @@ -56,7 +56,6 @@ void mutex_lock(smx_mutex_t mutex) [[block]]; int mutex_trylock(smx_mutex_t mutex); void mutex_unlock(smx_mutex_t mutex); -smx_cond_t cond_init() [[nohandler]]; void cond_wait(smx_cond_t cond, smx_mutex_t mutex) [[block]]; void cond_wait_timeout(smx_cond_t cond, smx_mutex_t mutex, double timeout) [[block]];