Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
modernize three simcalls
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Fri, 18 Aug 2017 08:43:43 +0000 (10:43 +0200)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Fri, 18 Aug 2017 08:43:43 +0000 (10:43 +0200)
src/simix/ActorImpl.cpp
src/simix/libsmx.cpp
src/simix/popping_accessors.h
src/simix/popping_bodies.cpp
src/simix/popping_enum.h
src/simix/popping_generated.cpp
src/simix/simcalls.in
src/simix/smx_host.cpp
src/simix/smx_host_private.h

index 610678f..229a387 100644 (file)
@@ -545,9 +545,8 @@ void SIMIX_process_throw(smx_actor_t process, xbt_errcat_t cat, int value, const
 
     simgrid::kernel::activity::ExecImplPtr exec =
         boost::dynamic_pointer_cast<simgrid::kernel::activity::ExecImpl>(process->waiting_synchro);
-    if (exec != nullptr) {
-      SIMIX_execution_cancel(process->waiting_synchro);
-    }
+    if (exec != nullptr && exec->surf_exec)
+      exec->surf_exec->cancel();
 
     simgrid::kernel::activity::CommImplPtr comm =
         boost::dynamic_pointer_cast<simgrid::kernel::activity::CommImpl>(process->waiting_synchro);
index d8a0a0f..b26dcb7 100644 (file)
@@ -111,7 +111,14 @@ smx_activity_t simcall_execution_parallel_start(const char* name, int host_nb, s
  */
 void simcall_execution_cancel(smx_activity_t execution)
 {
-  simcall_BODY_execution_cancel(execution);
+  simgrid::simix::kernelImmediate([execution] {
+    XBT_DEBUG("Cancel synchro %p", execution.get());
+    simgrid::kernel::activity::ExecImplPtr exec =
+        boost::static_pointer_cast<simgrid::kernel::activity::ExecImpl>(execution);
+
+    if (exec->surf_exec)
+      exec->surf_exec->cancel();
+  });
 }
 
 /**
@@ -126,8 +133,13 @@ void simcall_execution_set_priority(smx_activity_t execution, double priority)
 {
   /* checking for infinite values */
   xbt_assert(std::isfinite(priority), "priority is not finite!");
+  simgrid::simix::kernelImmediate([execution, priority] {
 
-  simcall_BODY_execution_set_priority(execution, priority);
+    simgrid::kernel::activity::ExecImplPtr exec =
+        boost::static_pointer_cast<simgrid::kernel::activity::ExecImpl>(execution);
+    if (exec->surf_exec)
+      exec->surf_exec->setSharingWeight(priority);
+  });
 }
 
 /**
@@ -140,7 +152,12 @@ void simcall_execution_set_priority(smx_activity_t execution, double priority)
  */
 void simcall_execution_set_bound(smx_activity_t execution, double bound)
 {
-  simcall_BODY_execution_set_bound(execution, bound);
+  simgrid::simix::kernelImmediate([execution, bound] {
+    simgrid::kernel::activity::ExecImplPtr exec =
+        boost::static_pointer_cast<simgrid::kernel::activity::ExecImpl>(execution);
+    if (exec->surf_exec)
+      static_cast<simgrid::surf::CpuAction*>(exec->surf_exec)->setBound(bound);
+  });
 }
 
 /**
index eb130f4..a101a80 100644 (file)
@@ -279,81 +279,6 @@ simcall_execution_parallel_start__set__result(smx_simcall_t simcall,
   simgrid::simix::marshal<boost::intrusive_ptr<simgrid::kernel::activity::ExecImpl>>(simcall->result, result);
 }
 
-static inline boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>
-simcall_execution_cancel__get__execution(smx_simcall_t simcall)
-{
-  return simgrid::simix::unmarshal<boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(simcall->args[0]);
-}
-static inline simgrid::kernel::activity::ActivityImpl*
-simcall_execution_cancel__getraw__execution(smx_simcall_t simcall)
-{
-  return simgrid::simix::unmarshal_raw<simgrid::kernel::activity::ActivityImpl*>(simcall->args[0]);
-}
-static inline void
-simcall_execution_cancel__set__execution(smx_simcall_t simcall,
-                                         boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> arg)
-{
-  simgrid::simix::marshal<boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(simcall->args[0], arg);
-}
-
-static inline boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>
-simcall_execution_set_priority__get__execution(smx_simcall_t simcall)
-{
-  return simgrid::simix::unmarshal<boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(simcall->args[0]);
-}
-static inline simgrid::kernel::activity::ActivityImpl*
-simcall_execution_set_priority__getraw__execution(smx_simcall_t simcall)
-{
-  return simgrid::simix::unmarshal_raw<simgrid::kernel::activity::ActivityImpl*>(simcall->args[0]);
-}
-static inline void
-simcall_execution_set_priority__set__execution(smx_simcall_t simcall,
-                                               boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> arg)
-{
-  simgrid::simix::marshal<boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(simcall->args[0], arg);
-}
-static inline double simcall_execution_set_priority__get__priority(smx_simcall_t simcall)
-{
-  return simgrid::simix::unmarshal<double>(simcall->args[1]);
-}
-static inline double simcall_execution_set_priority__getraw__priority(smx_simcall_t simcall)
-{
-  return simgrid::simix::unmarshal_raw<double>(simcall->args[1]);
-}
-static inline void simcall_execution_set_priority__set__priority(smx_simcall_t simcall, double arg)
-{
-  simgrid::simix::marshal<double>(simcall->args[1], arg);
-}
-
-static inline boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>
-simcall_execution_set_bound__get__execution(smx_simcall_t simcall)
-{
-  return simgrid::simix::unmarshal<boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(simcall->args[0]);
-}
-static inline simgrid::kernel::activity::ActivityImpl*
-simcall_execution_set_bound__getraw__execution(smx_simcall_t simcall)
-{
-  return simgrid::simix::unmarshal_raw<simgrid::kernel::activity::ActivityImpl*>(simcall->args[0]);
-}
-static inline void
-simcall_execution_set_bound__set__execution(smx_simcall_t simcall,
-                                            boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> arg)
-{
-  simgrid::simix::marshal<boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(simcall->args[0], arg);
-}
-static inline double simcall_execution_set_bound__get__bound(smx_simcall_t simcall)
-{
-  return simgrid::simix::unmarshal<double>(simcall->args[1]);
-}
-static inline double simcall_execution_set_bound__getraw__bound(smx_simcall_t simcall)
-{
-  return simgrid::simix::unmarshal_raw<double>(simcall->args[1]);
-}
-static inline void simcall_execution_set_bound__set__bound(smx_simcall_t simcall, double arg)
-{
-  simgrid::simix::marshal<double>(simcall->args[1], arg);
-}
-
 static inline boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>
 simcall_execution_wait__get__execution(smx_simcall_t simcall)
 {
index 3a1bd5e..4f3e9a7 100644 (file)
@@ -87,35 +87,6 @@ inline static int simcall_BODY_process_sleep(double duration) {
                                             bytes_amount, rate, timeout);
   }
 
-  inline static void
-  simcall_BODY_execution_cancel(boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> execution)
-  {
-    /* Go to that function to follow the code flow through the simcall barrier */
-    if (0) SIMIX_execution_cancel(execution);
-    return simcall<void, boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(SIMCALL_EXECUTION_CANCEL,
-                                                                                        execution);
-  }
-
-  inline static void
-  simcall_BODY_execution_set_priority(boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> execution,
-                                      double priority)
-  {
-    /* Go to that function to follow the code flow through the simcall barrier */
-    if (0) SIMIX_execution_set_priority(execution, priority);
-    return simcall<void, boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>, double>(
-        SIMCALL_EXECUTION_SET_PRIORITY, execution, priority);
-  }
-
-  inline static void
-  simcall_BODY_execution_set_bound(boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> execution,
-                                   double bound)
-  {
-    /* Go to that function to follow the code flow through the simcall barrier */
-    if (0) SIMIX_execution_set_bound(execution, bound);
-    return simcall<void, boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>, double>(
-        SIMCALL_EXECUTION_SET_BOUND, execution, bound);
-  }
-
   inline static int simcall_BODY_execution_wait(boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> execution)
   {
     /* Go to that function to follow the code flow through the simcall barrier */
index a2f3155..8e44e97 100644 (file)
@@ -26,9 +26,6 @@ typedef enum {
   SIMCALL_PROCESS_SLEEP,
   SIMCALL_EXECUTION_START,
   SIMCALL_EXECUTION_PARALLEL_START,
-  SIMCALL_EXECUTION_CANCEL,
-  SIMCALL_EXECUTION_SET_PRIORITY,
-  SIMCALL_EXECUTION_SET_BOUND,
   SIMCALL_EXECUTION_WAIT,
   SIMCALL_PROCESS_ON_EXIT,
   SIMCALL_COMM_IPROBE,
index e52c41f..7f4fc93 100644 (file)
@@ -32,9 +32,6 @@ const char* simcall_names[] = {
     "SIMCALL_PROCESS_SLEEP",
     "SIMCALL_EXECUTION_START",
     "SIMCALL_EXECUTION_PARALLEL_START",
-    "SIMCALL_EXECUTION_CANCEL",
-    "SIMCALL_EXECUTION_SET_PRIORITY",
-    "SIMCALL_EXECUTION_SET_BOUND",
     "SIMCALL_EXECUTION_WAIT",
     "SIMCALL_PROCESS_ON_EXIT",
     "SIMCALL_COMM_IPROBE",
@@ -118,26 +115,6 @@ case SIMCALL_EXECUTION_PARALLEL_START:
   SIMIX_simcall_answer(simcall);
   break;
 
-case SIMCALL_EXECUTION_CANCEL:
-  SIMIX_execution_cancel(
-      simgrid::simix::unmarshal<boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(simcall->args[0]));
-  SIMIX_simcall_answer(simcall);
-  break;
-
-case SIMCALL_EXECUTION_SET_PRIORITY:
-  SIMIX_execution_set_priority(
-      simgrid::simix::unmarshal<boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(simcall->args[0]),
-      simgrid::simix::unmarshal<double>(simcall->args[1]));
-  SIMIX_simcall_answer(simcall);
-  break;
-
-case SIMCALL_EXECUTION_SET_BOUND:
-  SIMIX_execution_set_bound(
-      simgrid::simix::unmarshal<boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(simcall->args[0]),
-      simgrid::simix::unmarshal<double>(simcall->args[1]));
-  SIMIX_simcall_answer(simcall);
-  break;
-
 case SIMCALL_EXECUTION_WAIT:
   simcall_HANDLER_execution_wait(
       simcall,
index c13413f..8397063 100644 (file)
@@ -43,9 +43,6 @@ int  process_sleep(double duration) [[block]];
 
 boost::intrusive_ptr<simgrid::kernel::activity::ExecImpl> execution_start(const char* name, double flops_amount, double priority, double bound);
 boost::intrusive_ptr<simgrid::kernel::activity::ExecImpl> execution_parallel_start(const char* name, int host_nb, sg_host_t* host_list, double* flops_amount, double* bytes_amount, double rate, double timeout) [[nohandler]];
-void          execution_cancel(boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> execution) [[nohandler]];
-void          execution_set_priority(boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> execution, double priority) [[nohandler]];
-void          execution_set_bound(boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> execution, double bound) [[nohandler]];
 int           execution_wait(boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> execution) [[block]];
 
 void          process_on_exit(smx_actor_t process, int_f_pvoid_pvoid_t fun, void* data) [[nohandler]];
index ed75d52..458d433 100644 (file)
@@ -216,32 +216,6 @@ SIMIX_execution_parallel_start(const char* name, int host_nb, sg_host_t* host_li
   return exec;
 }
 
-void SIMIX_execution_cancel(smx_activity_t synchro)
-{
-  XBT_DEBUG("Cancel synchro %p", synchro.get());
-  simgrid::kernel::activity::ExecImplPtr exec =
-      boost::static_pointer_cast<simgrid::kernel::activity::ExecImpl>(synchro);
-
-  if (exec->surf_exec)
-    exec->surf_exec->cancel();
-}
-
-void SIMIX_execution_set_priority(smx_activity_t synchro, double priority)
-{
-  simgrid::kernel::activity::ExecImplPtr exec =
-      boost::static_pointer_cast<simgrid::kernel::activity::ExecImpl>(synchro);
-  if(exec->surf_exec)
-    exec->surf_exec->setSharingWeight(priority);
-}
-
-void SIMIX_execution_set_bound(smx_activity_t synchro, double bound)
-{
-  simgrid::kernel::activity::ExecImplPtr exec =
-      boost::static_pointer_cast<simgrid::kernel::activity::ExecImpl>(synchro);
-  if(exec->surf_exec)
-    static_cast<simgrid::surf::CpuAction*>(exec->surf_exec)->setBound(bound);
-}
-
 void simcall_HANDLER_execution_wait(smx_simcall_t simcall, smx_activity_t synchro)
 {
   simgrid::kernel::activity::ExecImplPtr exec =
index b7028b9..d9a6b57 100644 (file)
@@ -45,9 +45,6 @@ XBT_PRIVATE void SIMIX_host_add_auto_restart_process(sg_host_t host, const char*
                                                      std::map<std::string, std::string>* properties, int auto_restart);
 
 XBT_PRIVATE void SIMIX_host_autorestart(sg_host_t host);
-XBT_PRIVATE void SIMIX_execution_cancel(smx_activity_t synchro);
-XBT_PRIVATE void SIMIX_execution_set_priority(smx_activity_t synchro, double priority);
-XBT_PRIVATE void SIMIX_execution_set_bound(smx_activity_t synchro, double bound);
 
 XBT_PRIVATE void SIMIX_execution_finish(simgrid::kernel::activity::ExecImplPtr exec);