X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4775ee0f232bccc4978dfbfb8153b7593be7dd77..172a73b13fe909117c7fbf3d69d4ce5e87efdbc6:/src/msg/msg_process.cpp diff --git a/src/msg/msg_process.cpp b/src/msg/msg_process.cpp index 18878b0407..7f673f78fa 100644 --- a/src/msg/msg_process.cpp +++ b/src/msg/msg_process.cpp @@ -3,13 +3,14 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#include "msg_private.h" +#include "msg_private.hpp" #include "simgrid/s4u/Host.hpp" #include "src/simix/ActorImpl.hpp" +#include "src/simix/smx_private.hpp" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_process, msg, "Logging specific to MSG (process)"); -SG_BEGIN_DECL() +extern "C" { /** @addtogroup m_process_management * @@ -51,7 +52,8 @@ void MSG_process_cleanup_from_SIMIX(smx_actor_t smx_actor) /* This function creates a MSG process. It has the prototype enforced by SIMIX_function_register_process_create */ smx_actor_t MSG_process_create_from_SIMIX(const char* name, std::function code, void* data, sg_host_t host, - std::map* properties, smx_actor_t parent_process) + std::map* properties, + smx_actor_t /*parent_process*/) { msg_process_t p = MSG_process_create_from_stdfunc(name, std::move(code), data, host, properties); return p == nullptr ? nullptr : p->getImpl(); @@ -137,8 +139,7 @@ msg_process_t MSG_process_create_with_environment(const char *name, xbt_main_fun xbt_free(argv); return res; } - -SG_END_DECL() +} msg_process_t MSG_process_create_from_stdfunc(const char* name, std::function code, void* data, msg_host_t host, std::map* properties) @@ -157,7 +158,7 @@ msg_process_t MSG_process_create_from_stdfunc(const char* name, std::functionciface(); } -SG_BEGIN_DECL() +extern "C" { /* Become a process in the simulation * @@ -304,7 +305,12 @@ msg_process_t MSG_process_from_PID(int PID) /** @brief returns a list of all currently existing processes */ xbt_dynar_t MSG_processes_as_dynar() { - return SIMIX_processes_as_dynar(); + xbt_dynar_t res = xbt_dynar_new(sizeof(smx_actor_t), nullptr); + for (auto const& kv : simix_global->process_list) { + smx_actor_t actor = kv.second; + xbt_dynar_push(res, &actor); + } + return res; } /** @brief Return the current number MSG processes. */ @@ -385,7 +391,7 @@ xbt_dict_t MSG_process_get_properties(msg_process_t process) simgrid::simix::kernelImmediate([process] { return process->getImpl()->getProperties(); }); if (props == nullptr) return nullptr; - for (auto elm : *props) { + for (auto const& elm : *props) { xbt_dict_set(as_dict, elm.first.c_str(), xbt_strdup(elm.second.c_str()), nullptr); } return as_dict; @@ -518,5 +524,4 @@ XBT_PUBLIC(void) MSG_process_unref(msg_process_t process) { intrusive_ptr_release(process); } - -SG_END_DECL() +}