Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
start to untangle the MSG actor creation mess
[simgrid.git] / include / simgrid / simix.hpp
index fe3d4fd..ca60939 100644 (file)
@@ -17,6 +17,7 @@
 #include <xbt/function_types.h>
 #include <xbt/future.hpp>
 #include <xbt/functional.hpp>
+#include <xbt/signal.hpp>
 
 #include <simgrid/simix.h>
 
@@ -86,6 +87,11 @@ typedef std::function<ActorCode(std::vector<std::string> args)> ActorCodeFactory
 
 XBT_PUBLIC(void) registerFunction(const char* name, ActorCodeFactory factory);
 
+/** These functions will be called when we detect a deadlock: any remaining process is locked on an action
+ *
+ * If these functions manage to unlock some of the processes, then the deadlock will be avoided.
+ */
+extern simgrid::xbt::signal<void()> onDeadlock;
 }
 }
 
@@ -104,8 +110,7 @@ typedef smx_actor_t (*smx_creation_func_t) (
                                       /* name */ const char*,
                                       std::function<void()> code,
                                       /* userdata */ void*,
-                                      /* hostname */ const char*,
-                                      /* kill_time */ double,
+                                      /* hostname */ sg_host_t,
                                       /* props */ xbt_dict_t,
                                       /* auto_restart */ int,
                                       /* parent_process */ smx_actor_t);
@@ -116,21 +121,20 @@ XBT_PUBLIC(void) SIMIX_function_register_process_create(smx_creation_func_t func
 XBT_PUBLIC(smx_actor_t) simcall_process_create(const char *name,
                                           std::function<void()> code,
                                           void *data,
-                                          const char *hostname,
-                                          double kill_time,
+                                          sg_host_t host,
                                           xbt_dict_t properties,
                                           int auto_restart);
 
 XBT_PUBLIC(smx_timer_t) SIMIX_timer_set(double date, simgrid::xbt::Task<void()> callback);
 
 template<class F> inline
-XBT_PUBLIC(smx_timer_t) SIMIX_timer_set(double date, F callback)
+smx_timer_t SIMIX_timer_set(double date, F callback)
 {
   return SIMIX_timer_set(date, simgrid::xbt::Task<void()>(std::move(callback)));
 }
 
 template<class R, class T> inline
-XBT_PUBLIC(smx_timer_t) SIMIX_timer_set(double date, R(*callback)(T*), T* arg)
+smx_timer_t SIMIX_timer_set(double date, R(*callback)(T*), T* arg)
 {
   return SIMIX_timer_set(date, [=](){ callback(arg); });
 }