X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/425f2a49fa5770e2f008b0348245ea6b444118a4..5b547799240cfe5d60c1c4161e3fc8849095e2ca:/src/simix/libsmx.cpp diff --git a/src/simix/libsmx.cpp b/src/simix/libsmx.cpp index 8203c2fd5e..d32231a1ae 100644 --- a/src/simix/libsmx.cpp +++ b/src/simix/libsmx.cpp @@ -25,6 +25,10 @@ #include "popping_bodies.cpp" +#include +#include +#include + /** * @ingroup simix_host_management * @brief Waits for the completion of an execution synchro and destroy it. @@ -187,10 +191,10 @@ unsigned int simcall_comm_waitany(simgrid::kernel::activity::ActivityImplPtr com std::transform(comms, comms + count, begin(rcomms), [](const simgrid::kernel::activity::ActivityImplPtr& comm) { return static_cast(comm.get()); }); - return simcall_BODY_comm_waitany(rcomms.data(), rcomms.size(), timeout); + return static_cast(simcall_BODY_comm_waitany(rcomms.data(), rcomms.size(), timeout)); } -unsigned int simcall_comm_waitany(simgrid::kernel::activity::CommImpl* comms[], size_t count, double timeout) +ssize_t simcall_comm_waitany(simgrid::kernel::activity::CommImpl* comms[], size_t count, double timeout) { return simcall_BODY_comm_waitany(comms, count, timeout); } @@ -206,10 +210,10 @@ int simcall_comm_testany(simgrid::kernel::activity::ActivityImplPtr comms[], siz std::transform(comms, comms + count, begin(rcomms), [](const simgrid::kernel::activity::ActivityImplPtr& comm) { return static_cast(comm.get()); }); - return simcall_BODY_comm_testany(rcomms.data(), rcomms.size()); + return static_cast(simcall_BODY_comm_testany(rcomms.data(), rcomms.size())); } -int simcall_comm_testany(simgrid::kernel::activity::CommImpl* comms[], size_t count) +ssize_t simcall_comm_testany(simgrid::kernel::activity::CommImpl* comms[], size_t count) { if (count == 0) return -1; @@ -369,9 +373,18 @@ int simcall_mc_random(int min, int max) // XBT_ATTRIB_DEPRECATD_v331 /* ************************************************************************** */ /** @brief returns a printable string representing a simcall */ -const char* SIMIX_simcall_name(Simcall kind) -{ - return simcall_names[static_cast(kind)]; +const char* SIMIX_simcall_name(const s_smx_simcall& simcall) +{ + if (simcall.observer_ != nullptr) { + static std::string name; + name = boost::core::demangle(typeid(*simcall.observer_).name()); + const char* cname = name.c_str(); + if (name.rfind("simgrid::kernel::", 0) == 0) + cname += 17; // strip prefix "simgrid::kernel::" + return cname; + } else { + return simcall_names[static_cast(simcall.call_)]; + } } namespace simgrid {