X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/55092bf3f9fe1cccfe72f7ef81fcd51f9a0eb4ca..455435b8a7cc8d84037aa66104a73d4760d9666f:/include/simgrid/simix.hpp?ds=sidebyside diff --git a/include/simgrid/simix.hpp b/include/simgrid/simix.hpp index d4200a3080..b6b9a1cecf 100644 --- a/include/simgrid/simix.hpp +++ b/include/simgrid/simix.hpp @@ -17,6 +17,7 @@ #include #include #include +#include #include @@ -86,6 +87,11 @@ typedef std::function 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 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 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 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 callback); template 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(std::move(callback))); } template 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); }); }