X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/74c1bf2b26c5a3aa0d8c29674dc12993e7c0de15..182cc8093e15ba81fa630601a0021dee7979991a:/src/msg/msg_process.cpp diff --git a/src/msg/msg_process.cpp b/src/msg/msg_process.cpp index 75a39974fb..78ea89df16 100644 --- a/src/msg/msg_process.cpp +++ b/src/msg/msg_process.cpp @@ -3,14 +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.h" +#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 * @@ -40,7 +40,7 @@ void MSG_process_cleanup_from_SIMIX(smx_actor_t smx_actor) simcall_process_set_data(smx_actor, nullptr); } - TRACE_msg_process_destroy(smx_actor->name.c_str(), smx_actor->pid); + TRACE_msg_process_destroy(smx_actor->name, smx_actor->pid); // free the data if a function was provided if (msg_actor && msg_actor->data && msg_global->process_data_cleanup) { msg_global->process_data_cleanup(msg_actor->data); @@ -52,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(); @@ -138,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) @@ -158,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 * @@ -214,7 +214,7 @@ void MSG_process_kill(msg_process_t process) * \param timeout wait until the process is over, or the timeout occurs */ msg_error_t MSG_process_join(msg_process_t process, double timeout){ - simcall_process_join(process->getImpl(), timeout); + process->join(timeout); return MSG_OK; } @@ -276,17 +276,12 @@ XBT_PUBLIC(void) MSG_process_set_data_cleanup(void_f_pvoid_t data_cleanup) { msg_global->process_data_cleanup = data_cleanup; } -/** \ingroup m_process_management - * \brief Return the location on which a process is running. - * \param process a process (nullptr means the current one) - * \return the msg_host_t corresponding to the location on which \a process is running. - */ msg_host_t MSG_process_get_host(msg_process_t process) { if (process == nullptr) { return SIMIX_process_self()->host; } else { - return process->getImpl()->host; + return process->getHost(); } } @@ -327,7 +322,7 @@ int MSG_process_get_number() */ msg_error_t MSG_process_set_kill_time(msg_process_t process, double kill_time) { - simcall_process_set_kill_time(process->getImpl(), kill_time); + process->setKillTime(kill_time); return MSG_OK; } @@ -342,7 +337,7 @@ int MSG_process_get_PID(msg_process_t process) * and the exceptions, so it would be called back again and again */ if (process == nullptr || process->getImpl() == nullptr) return 0; - return process->getImpl()->pid; + return process->getPid(); } /** \ingroup m_process_management @@ -353,7 +348,7 @@ int MSG_process_get_PID(msg_process_t process) */ int MSG_process_get_PPID(msg_process_t process) { - return process->getImpl()->ppid; + return process->getPpid(); } /** \ingroup m_process_management @@ -387,8 +382,7 @@ xbt_dict_t MSG_process_get_properties(msg_process_t process) { xbt_assert(process != nullptr, "Invalid parameter: First argument must not be nullptr"); xbt_dict_t as_dict = xbt_dict_new_homogeneous(xbt_free_f); - std::map* props = - simgrid::simix::kernelImmediate([process] { return process->getImpl()->getProperties(); }); + std::map* props = process->getProperties(); if (props == nullptr) return nullptr; for (auto const& elm : *props) { @@ -444,9 +438,7 @@ msg_process_t MSG_process_self() msg_error_t MSG_process_suspend(msg_process_t process) { xbt_assert(process != nullptr, "Invalid parameter: First argument must not be nullptr"); - - TRACE_msg_process_suspend(process); - simcall_process_suspend(process->getImpl()); + process->suspend(); return MSG_OK; } @@ -458,8 +450,6 @@ msg_error_t MSG_process_suspend(msg_process_t process) msg_error_t MSG_process_resume(msg_process_t process) { xbt_assert(process != nullptr, "Invalid parameter: First argument must not be nullptr"); - - TRACE_msg_process_resume(process); process->resume(); return MSG_OK; } @@ -507,7 +497,7 @@ XBT_PUBLIC(msg_process_t) MSG_process_restart(msg_process_t process) { */ XBT_PUBLIC(void) MSG_process_daemonize(msg_process_t process) { - simgrid::simix::kernelImmediate([process]() { process->getImpl()->daemonize(); }); + process->daemonize(); } /** @ingroup m_process_management @@ -524,5 +514,4 @@ XBT_PUBLIC(void) MSG_process_unref(msg_process_t process) { intrusive_ptr_release(process); } - -SG_END_DECL() +}