Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
gosh, so much cruft in this code
[simgrid.git] / include / simgrid / simix.hpp
index d4200a3..b6b9a1c 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;
 }
 }
 
@@ -100,23 +106,23 @@ XBT_PUBLIC(void) registerFunction(const char* name, ActorCodeFactory factory);
  * int argc, char **argv: parameters passed to code
  * xbt_dict_t pros: properties
  */
-typedef smx_process_t (*smx_creation_func_t) (
+typedef smx_actor_t (*smx_creation_func_t) (
                                       /* name */ const char*,
                                       std::function<void()> code,
                                       /* userdata */ void*,
-                                      /* hostname */ const char*,
+                                      /* hostname */ sg_host_t,
                                       /* kill_time */ double,
                                       /* props */ xbt_dict_t,
                                       /* auto_restart */ int,
-                                      /* parent_process */ smx_process_t);
+                                      /* parent_process */ smx_actor_t);
 
 extern "C"
 XBT_PUBLIC(void) SIMIX_function_register_process_create(smx_creation_func_t function);
 
-XBT_PUBLIC(smx_process_t) simcall_process_create(const char *name,
+XBT_PUBLIC(smx_actor_t) simcall_process_create(const char *name,
                                           std::function<void()> code,
                                           void *data,
-                                          const char *hostname,
+                                          sg_host_t host,
                                           double kill_time,
                                           xbt_dict_t properties,
                                           int auto_restart);
@@ -124,13 +130,13 @@ XBT_PUBLIC(smx_process_t) simcall_process_create(const char *name,
 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); });
 }