From f2236ed8987d2350cba5d839b6420e53968b6225 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sat, 23 Apr 2016 22:20:29 +0200 Subject: [PATCH 1/1] populate s4u::mailbox The evil plan is to use that instead of smx_mailbox_t --- include/simgrid/forward.h | 10 +++++++--- include/simgrid/s4u/mailbox.hpp | 5 +++++ src/s4u/s4u_mailbox.cpp | 11 +++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/include/simgrid/forward.h b/include/simgrid/forward.h index b1eab3a6e3..549c031112 100644 --- a/include/simgrid/forward.h +++ b/include/simgrid/forward.h @@ -13,6 +13,7 @@ namespace simgrid { namespace s4u { class As; class Host; + class Mailbox; } namespace surf { class Resource; @@ -26,8 +27,9 @@ namespace simgrid { } } -typedef simgrid::s4u::Host simgrid_Host; typedef simgrid::s4u::As simgrid_As; +typedef simgrid::s4u::Host simgrid_Host; +typedef simgrid::s4u::Mailbox simgrid_Mailbox; typedef simgrid::surf::Cpu surf_Cpu; typedef simgrid::surf::NetCard surf_NetCard; typedef simgrid::surf::Link Link; @@ -36,8 +38,9 @@ typedef simgrid::trace_mgr::trace tmgr_Trace; #else -typedef struct simgrid_Host simgrid_Host; typedef struct simgrid_As simgrid_As; +typedef struct simgrid_Host simgrid_Host; +typedef struct simgrid_Mailbox simgrid_Mailbox; typedef struct surf_Cpu surf_Cpu; typedef struct surf_NetCard surf_NetCard; typedef struct surf_Resource surf_Resource; @@ -45,8 +48,9 @@ typedef struct Link Link; typedef struct Trace tmgr_Trace; #endif -typedef simgrid_Host* sg_host_t; typedef simgrid_As *AS_t; +typedef simgrid_Host* sg_host_t; +typedef simgrid_Mailbox* sg_mbox_t; typedef surf_Cpu *surf_cpu_t; typedef surf_NetCard *sg_netcard_t; diff --git a/include/simgrid/s4u/mailbox.hpp b/include/simgrid/s4u/mailbox.hpp index 5914a41065..2a75091cd9 100644 --- a/include/simgrid/s4u/mailbox.hpp +++ b/include/simgrid/s4u/mailbox.hpp @@ -38,6 +38,8 @@ protected: public: /** Retrieve the mailbox associated to the given string */ static Mailbox *byName(const char *name); + /** Returns whether the mailbox contains queued communications */ + bool empty(); private: smx_mailbox_t inferior_; @@ -47,4 +49,7 @@ private: #endif +XBT_PUBLIC(sg_mbox_t) sg_mbox_by_name(const char*name); +XBT_PUBLIC(int) sg_mbox_is_empty(sg_mbox_t mbox); + #endif /* SIMGRID_S4U_MAILBOX_HPP */ diff --git a/src/s4u/s4u_mailbox.cpp b/src/s4u/s4u_mailbox.cpp index 3b8c0ba51d..6e497d85be 100644 --- a/src/s4u/s4u_mailbox.cpp +++ b/src/s4u/s4u_mailbox.cpp @@ -36,3 +36,14 @@ s4u::Mailbox *s4u::Mailbox::byName(const char*name) { } return res; } + +bool s4u::Mailbox::empty() { + return nullptr == simcall_mbox_get_head(inferior_); +} + +sg_mbox_t sg_mbox_by_name(const char*name){ + return s4u::Mailbox::byName(name); +} +int sg_mbox_is_empty(sg_mbox_t mbox) { + return mbox->empty(); +} -- 2.20.1