From 29c54250185627bc66380a283f2289dcdd4d6353 Mon Sep 17 00:00:00 2001 From: eazimi Date: Fri, 5 Feb 2021 13:12:43 +0100 Subject: [PATCH] merge with framagit/master --- docs/source/outcomes.rst | 4 ++-- include/xbt/log.h | 18 ++++++++++++++++++ src/kernel/activity/CommImpl.cpp | 10 +--------- src/kernel/activity/CommImpl.hpp | 5 ++--- src/mc/api.cpp | 2 +- src/mc/mc_base.cpp | 3 +-- src/xbt/log.cpp | 28 ---------------------------- 7 files changed, 25 insertions(+), 45 deletions(-) diff --git a/docs/source/outcomes.rst b/docs/source/outcomes.rst index b5af5ecd47..152fe61658 100644 --- a/docs/source/outcomes.rst +++ b/docs/source/outcomes.rst @@ -12,8 +12,8 @@ Using ``printf`` or ``println`` to display information is possible, but quickly should use SimGrid's logging facilities, that are inspired from `Log4J `_. This way, you can filter the messages at runtime, based on their severity and their topic. There is four main concepts in SimGrid's logging mechanism: -The **category** of a message represents its topic. These categories are organized as a hierarchy, loosely corresponding to SimGrid's modules architecture. `Existing categories -`_ are documented online, but some of them may be disabled depending on the compilation options. Use ``--help-log-categories`` on the command line to see +The **category** of a message represents its topic. These categories are organized as a hierarchy, loosely corresponding to SimGrid's modules architecture. :ref:`Existing categories +` are documented online, but some of them may be disabled depending on the compilation options. Use ``--help-log-categories`` on the command line to see the categories actually provided a given simulator. The message **priority** represents its severity. It can be one of ``trace``, ``debug``, ``verb``, ``info``, ``warn``, ``error`` and ``critical``. Every category has a configured diff --git a/include/xbt/log.h b/include/xbt/log.h index 6c6c4ffcc8..32215d227e 100644 --- a/include/xbt/log.h +++ b/include/xbt/log.h @@ -199,6 +199,22 @@ typedef enum { /* Functions you may call */ +/** Provide a log setting as if it were passed on the command line. + * + * Expected syntax: + * ( [category] "." [keyword] ":" value (" ")... )... + * + * where [category] is one the category names (see @ref XBT_log_cats for a complete list of the ones defined in the + * SimGrid library) and keyword is one of the following: + * + * - threshold: category's threshold priority. Possible values: + * TRACE,DEBUG,VERBOSE,INFO,WARNING,ERROR,CRITICAL + * - add or additivity: whether the logging actions must be passed to the parent category. + * Possible values: 0, 1, no, yes, on, off. + * Default value: yes. + * - fmt: the format to use. See @ref log_use_conf_fmt for more information. + * - app or appender: the appender to use. See @ref log_use_conf_app for more information. + */ XBT_PUBLIC void xbt_log_control_set(const char* cs); /* Forward declarations */ @@ -287,6 +303,8 @@ XBT_PUBLIC xbt_log_appender_t xbt_log_appender2_file_new(const char* arg, int ro /* ********************************** */ /* Functions that you shouldn't call */ /* ********************************** */ + +/** Retrieve and parse all log settings from the command line (don't call it directly) */ XBT_PUBLIC void xbt_log_init(int* argc, char** argv); XBT_PUBLIC void _xbt_log_event_log(xbt_log_event_t ev, const char* fmt, ...) XBT_ATTRIB_PRINTF(2, 3); XBT_PUBLIC int _xbt_log_cat_init(xbt_log_category_t category, e_xbt_log_priority_t priority); diff --git a/src/kernel/activity/CommImpl.cpp b/src/kernel/activity/CommImpl.cpp index c57f0a7746..630a2c2488 100644 --- a/src/kernel/activity/CommImpl.cpp +++ b/src/kernel/activity/CommImpl.cpp @@ -69,7 +69,6 @@ XBT_PRIVATE simgrid::kernel::activity::ActivityImplPtr simcall_HANDLER_comm_isen XBT_DEBUG("Receive already pushed"); other_comm->state_ = simgrid::kernel::activity::State::READY; - other_comm->set_type(simgrid::kernel::activity::CommImpl::Type::READY); } if (detached) { @@ -136,7 +135,7 @@ simcall_HANDLER_comm_irecv(smx_simcall_t /*simcall*/, smx_actor_t receiver, smx_ if (other_comm->surf_action_ && other_comm->get_remaining() < 1e-12) { XBT_DEBUG("comm %p has been already sent, and is finished, destroy it", other_comm.get()); other_comm->state_ = simgrid::kernel::activity::State::DONE; - other_comm->set_type(simgrid::kernel::activity::CommImpl::Type::DONE).set_mailbox(nullptr); + other_comm->set_mailbox(nullptr); } } } else { @@ -158,7 +157,6 @@ simcall_HANDLER_comm_irecv(smx_simcall_t /*simcall*/, smx_actor_t receiver, smx_ XBT_DEBUG("Match my %p with the existing %p", this_synchro.get(), other_comm.get()); other_comm->state_ = simgrid::kernel::activity::State::READY; - other_comm->set_type(simgrid::kernel::activity::CommImpl::Type::READY); } receiver->activities_.emplace_back(other_comm); } @@ -365,12 +363,6 @@ namespace simgrid { namespace kernel { namespace activity { -CommImpl& CommImpl::set_type(CommImpl::Type type) -{ - type_ = type; - return *this; -} - CommImpl& CommImpl::set_size(double size) { size_ = size; diff --git a/src/kernel/activity/CommImpl.hpp b/src/kernel/activity/CommImpl.hpp index 195209d422..e9485d664a 100644 --- a/src/kernel/activity/CommImpl.hpp +++ b/src/kernel/activity/CommImpl.hpp @@ -26,12 +26,11 @@ class XBT_PUBLIC CommImpl : public ActivityImpl_T { MailboxImpl* mbox_ = nullptr; /* Rendez-vous where the comm is queued */ public: - enum class Type { SEND = 0, RECEIVE, READY, DONE }; + enum class Type { SEND, RECEIVE }; CommImpl(Type type) : type_(type) {} CommImpl(s4u::Host* from, s4u::Host* to, double bytes); - CommImpl& set_type(CommImpl::Type type); CommImpl& set_size(double size); CommImpl& set_src_buff(unsigned char* buff, size_t size); CommImpl& set_dst_buff(unsigned char* buff, size_t* size); @@ -52,7 +51,7 @@ public: void post() override; void finish() override; - CommImpl::Type type_; /* Type of the communication (SEND or RECEIVE) */ + const CommImpl::Type type_; /* Type of the communication (SEND or RECEIVE) */ #if SIMGRID_HAVE_MC MailboxImpl* mbox_cpy = nullptr; /* Copy of the rendez-vous where the comm is queued, MC needs it for DPOR diff --git a/src/mc/api.cpp b/src/mc/api.cpp index f3d0a206fa..c4c6895920 100644 --- a/src/mc/api.cpp +++ b/src/mc/api.cpp @@ -118,7 +118,7 @@ static inline smx_simcall_t MC_state_choose_request_for_process(simgrid::mc::Sta const simgrid::kernel::activity::CommImpl* act = temp_act.get_buffer(); if (act->src_actor_.get() && act->dst_actor_.get()) state->transition_.argument_ = 0; // OK - else if (act->src_actor_.get() == nullptr && act->type_ == simgrid::kernel::activity::CommImpl::Type::READY && + else if (act->src_actor_.get() == nullptr && act->state_ == simgrid::kernel::activity::State::READY && act->detached()) state->transition_.argument_ = 0; // OK else diff --git a/src/mc/mc_base.cpp b/src/mc/mc_base.cpp index 5cc8b4930e..8274ec2b0c 100644 --- a/src/mc/mc_base.cpp +++ b/src/mc/mc_base.cpp @@ -102,8 +102,7 @@ bool actor_is_enabled(smx_actor_t actor) return true; } /* On the other hand if it hasn't a timeout, check if the comm is ready.*/ - else if (act->detached() && act->src_actor_ == nullptr && - act->type_ == simgrid::kernel::activity::CommImpl::Type::READY) + else if (act->detached() && act->src_actor_ == nullptr && act->state_ == simgrid::kernel::activity::State::READY) return (act->dst_actor_ != nullptr); return (act->src_actor_ && act->dst_actor_); } diff --git a/src/xbt/log.cpp b/src/xbt/log.cpp index 8113f3691d..39dcfbe392 100644 --- a/src/xbt/log.cpp +++ b/src/xbt/log.cpp @@ -21,11 +21,6 @@ int xbt_log_no_loc = 0; /* if set to true (with --log=no_loc), file localization will be omitted (for tesh tests) */ static std::recursive_mutex* log_cat_init_mutex = nullptr; -/** @addtogroup XBT_log - * - * For more information, please refer to @ref outcomes_logs Section. - */ - xbt_log_appender_t xbt_log_default_appender = nullptr; /* set in log_init */ xbt_log_layout_t xbt_log_default_layout = nullptr; /* set in log_init */ @@ -77,10 +72,6 @@ void xbt_log_preinit(void) static void xbt_log_help(); static void xbt_log_help_categories(); -/** @brief Get all logging settings from the command line - * - * xbt_log_control_set() is called on each string we got from cmd line - */ void xbt_log_init(int *argc, char **argv) { unsigned help_requested = 0; /* 1: logs; 2: categories */ @@ -451,25 +442,6 @@ static xbt_log_category_t _xbt_log_cat_searchsub(xbt_log_category_t cat, const c return nullptr; } -/** - * @ingroup XBT_log - * @param control_string What to parse - * - * Typically passed a command-line argument. The string has the syntax: - * - * ( [category] "." [keyword] ":" value (" ")... )... - * - * where [category] is one the category names (see @ref XBT_log_cats for a complete list of the ones defined in the - * SimGrid library) and keyword is one of the following: - * - * - thres: category's threshold priority. Possible values: - * TRACE,DEBUG,VERBOSE,INFO,WARNING,ERROR,CRITICAL - * - add or additivity: whether the logging actions must be passed to the parent category. - * Possible values: 0, 1, no, yes, on, off. - * Default value: yes. - * - fmt: the format to use. See @ref log_use_conf_fmt for more information. - * - app or appender: the appender to use. See @ref log_use_conf_app for more information. - */ void xbt_log_control_set(const char *control_string) { /* To split the string in commands, and the cursors */ -- 2.20.1