Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
merge with framagit/master
authoreazimi <azimi.ehsan@outlook.com>
Fri, 5 Feb 2021 12:12:43 +0000 (13:12 +0100)
committereazimi <azimi.ehsan@outlook.com>
Fri, 5 Feb 2021 12:12:43 +0000 (13:12 +0100)
docs/source/outcomes.rst
include/xbt/log.h
src/kernel/activity/CommImpl.cpp
src/kernel/activity/CommImpl.hpp
src/mc/api.cpp
src/mc/mc_base.cpp
src/xbt/log.cpp

index b5af5ec..152fe61 100644 (file)
@@ -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 <https://en.wikipedia.org/wiki/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
-<logging_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
+<logging_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
index 6c6c4ff..32215d2 100644 (file)
@@ -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);
index c57f0a7..630a2c2 100644 (file)
@@ -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;
index 195209d..e9485d6 100644 (file)
@@ -26,12 +26,11 @@ class XBT_PUBLIC CommImpl : public ActivityImpl_T<CommImpl> {
   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
index f3d0a20..c4c6895 100644 (file)
@@ -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
index 5cc8b49..8274ec2 100644 (file)
@@ -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_);
     }
index 8113f36..39dcfbe 100644 (file)
 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 */