Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use kernelImmediate for simcall cond_init.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Fri, 4 May 2018 14:03:57 +0000 (16:03 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Fri, 4 May 2018 14:03:57 +0000 (16:03 +0200)
src/kernel/activity/ConditionVariableImpl.cpp
src/kernel/activity/ConditionVariableImpl.hpp
src/simix/libsmx.cpp
src/simix/popping_accessors.hpp
src/simix/popping_bodies.cpp
src/simix/popping_enum.h
src/simix/popping_generated.cpp
src/simix/simcalls.in

index a238297..2ed96a7 100644 (file)
@@ -17,21 +17,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
  */
 void simcall_HANDLER_cond_wait(smx_simcall_t simcall, smx_cond_t cond, smx_mutex_t mutex)
index a41fa90..c9900d4 100644 (file)
@@ -34,6 +34,5 @@ private:
 } // namespace activity
 } // namespace kernel
 } // namespace simgrid
-XBT_PRIVATE smx_cond_t SIMIX_cond_init();
 
 #endif
index ca9ebb7..15c75f6 100644 (file)
@@ -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(); });
 }
 
 /**
index 8ee64da..ff804ef 100644 (file)
@@ -863,19 +863,6 @@ static inline void simcall_mutex_unlock__set__mutex(smx_simcall_t simcall, smx_m
   simgrid::simix::marshal<smx_mutex_t>(simcall->args[0], arg);
 }
 
-static inline smx_cond_t simcall_cond_init__get__result(smx_simcall_t simcall)
-{
-  return simgrid::simix::unmarshal<smx_cond_t>(simcall->result);
-}
-static inline smx_cond_t simcall_cond_init__getraw__result(smx_simcall_t simcall)
-{
-  return simgrid::simix::unmarshal_raw<smx_cond_t>(simcall->result);
-}
-static inline void simcall_cond_init__set__result(smx_simcall_t simcall, smx_cond_t result)
-{
-  simgrid::simix::marshal<smx_cond_t>(simcall->result, result);
-}
-
 static inline smx_cond_t simcall_cond_wait__get__cond(smx_simcall_t simcall)
 {
   return simgrid::simix::unmarshal<smx_cond_t>(simcall->args[0]);
index bc4c487..ad12e39 100644 (file)
@@ -156,13 +156,6 @@ inline static void simcall_BODY_mutex_unlock(smx_mutex_t mutex)
   return simcall<void, smx_mutex_t>(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<smx_cond_t>(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 */
index e47114f..7305834 100644 (file)
@@ -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,
index 6511ad6..3a7ae42 100644 (file)
@@ -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<smx_cond_t>(simcall->result, SIMIX_cond_init());
-  SIMIX_simcall_answer(simcall);
-  break;
-
 case SIMCALL_COND_WAIT:
   simcall_HANDLER_cond_wait(simcall, simgrid::simix::unmarshal<smx_cond_t>(simcall->args[0]), simgrid::simix::unmarshal<smx_mutex_t>(simcall->args[1]));
   break;
index af411ef..e637b58 100644 (file)
@@ -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]];