Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
cleanups
[simgrid.git] / include / simgrid / simix.hpp
index fe3d4fd..7e0e9e3 100644 (file)
@@ -7,16 +7,10 @@
 #ifndef SIMGRID_SIMIX_HPP
 #define SIMGRID_SIMIX_HPP
 
-#include <cstddef>
-
-#include <string>
-#include <utility>
-#include <memory>
-#include <functional>
-
-#include <xbt/function_types.h>
+//#include <xbt/function_types.h>
 #include <xbt/future.hpp>
 #include <xbt/functional.hpp>
+#include <xbt/signal.hpp>
 
 #include <simgrid/simix.h>
 
@@ -86,6 +80,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,33 +103,26 @@ 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);
 
 extern "C"
 XBT_PUBLIC(void) SIMIX_function_register_process_create(smx_creation_func_t function);
 
-XBT_PUBLIC(smx_actor_t) simcall_process_create(const char *name,
-                                          std::function<void()> code,
-                                          void *data,
-                                          const char *hostname,
-                                          double kill_time,
-                                          xbt_dict_t properties,
-                                          int auto_restart);
+XBT_PUBLIC(smx_actor_t)
+simcall_process_create(const char* name, std::function<void()> code, void* data, sg_host_t host, xbt_dict_t properties);
 
 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); });
 }