Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
don't use old fashioned simcall when you don't have to
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Tue, 12 Mar 2019 12:12:10 +0000 (13:12 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Tue, 12 Mar 2019 12:58:21 +0000 (13:58 +0100)
src/s4u/s4u_Actor.cpp
src/s4u/s4u_ConditionVariable.cpp
src/s4u/s4u_Mutex.cpp

index 934e52b..fa4677e 100644 (file)
@@ -42,8 +42,7 @@ ActorPtr Actor::self()
 ActorPtr Actor::init(const std::string& name, s4u::Host* host)
 {
   smx_actor_t self = SIMIX_process_self();
-  simgrid::kernel::actor::ActorImpl* actor =
-      simgrid::simix::simcall([self, &name, host] { return self->init(name, host).get(); });
+  kernel::actor::ActorImpl* actor = simix::simcall([self, &name, host] { return self->init(name, host).get(); });
   return actor->ciface();
 }
 
@@ -55,7 +54,9 @@ ActorPtr Actor::start(const std::function<void()>& code)
 
 ActorPtr Actor::create(const std::string& name, s4u::Host* host, const std::function<void()>& code)
 {
-  simgrid::kernel::actor::ActorImpl* actor = simcall_process_create(name, code, nullptr, host, nullptr);
+  smx_actor_t self = SIMIX_process_self();
+  kernel::actor::ActorImpl* actor =
+      simix::simcall([self, &name, host, &code] { return self->init(name, host)->start(code); });
 
   return actor->iface();
 }
index 9908b0c..e9f2c45 100644 (file)
@@ -16,7 +16,8 @@ namespace s4u {
 
 ConditionVariablePtr ConditionVariable::create()
 {
-  smx_cond_t cond = simcall_cond_init();
+  kernel::activity::ConditionVariableImpl* cond =
+      simix::simcall([] { return new kernel::activity::ConditionVariableImpl(); });
   return ConditionVariablePtr(&cond->cond_, false);
 }
 
index 5e0b6a7..2f90b26 100644 (file)
@@ -42,7 +42,7 @@ bool Mutex::try_lock()
  */
 MutexPtr Mutex::create()
 {
-  smx_mutex_t mutex = simcall_mutex_init();
+  kernel::activity::MutexImpl* mutex = simix::simcall([] { return new kernel::activity::MutexImpl(); });
   return MutexPtr(&mutex->mutex(), false);
 }