Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Move the conditionVariable observer to the right file
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Sun, 12 Nov 2023 22:46:31 +0000 (23:46 +0100)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Mon, 13 Nov 2023 15:05:52 +0000 (16:05 +0100)
src/kernel/activity/ConditionVariableImpl.cpp
src/kernel/actor/SimcallObserver.cpp
src/kernel/actor/SimcallObserver.hpp
src/kernel/actor/SynchroObserver.cpp
src/kernel/actor/SynchroObserver.hpp
src/s4u/s4u_ConditionVariable.cpp

index 2315ebe..59a681e 100644 (file)
@@ -6,7 +6,7 @@
 #include "src/kernel/activity/ConditionVariableImpl.hpp"
 #include "src/kernel/activity/MutexImpl.hpp"
 #include "src/kernel/activity/Synchro.hpp"
-#include "src/kernel/actor/SimcallObserver.hpp"
+#include "src/kernel/actor/SynchroObserver.hpp"
 #include <cmath> // std::isfinite
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(ker_condition, ker_synchro, "Condition variables kernel-space implementation");
index 3bd6ab9..d7657a4 100644 (file)
@@ -38,24 +38,6 @@ int RandomSimcall::get_max_consider() const
   return max_ - min_ + 1;
 }
 
-bool ConditionWaitSimcall::is_enabled()
-{
-  if (static bool warned = false; not warned) {
-    XBT_INFO("Using condition variables in model-checked code is still experimental. Use at your own risk");
-    warned = true;
-  }
-  return true;
-}
-void ConditionWaitSimcall::serialize(std::stringstream& stream) const
-{
-  THROW_UNIMPLEMENTED;
-}
-std::string ConditionWaitSimcall::to_string() const
-{
-  return "ConditionWait(cond_id:" + ptr_to_id<activity::ConditionVariableImpl const>(get_cond()) +
-         " mutex_id:" + std::to_string(get_mutex()->get_id()) + ")";
-}
-
 ActorJoinSimcall::ActorJoinSimcall(ActorImpl* actor, ActorImpl* other, double timeout)
     : SimcallObserver(actor), other_(s4u::ActorPtr(other->get_iface())), timeout_(timeout)
 {
index d43ac00..c7d1353 100644 (file)
@@ -94,25 +94,6 @@ public:
   int get_value() const { return next_value_; }
 };
 
-class ConditionWaitSimcall final : public ResultingSimcall<bool> {
-  activity::ConditionVariableImpl* const cond_;
-  activity::MutexImpl* const mutex_;
-  const double timeout_;
-
-public:
-  ConditionWaitSimcall(ActorImpl* actor, activity::ConditionVariableImpl* cond, activity::MutexImpl* mutex,
-                       double timeout = -1.0)
-      : ResultingSimcall(actor, false), cond_(cond), mutex_(mutex), timeout_(timeout)
-  {
-  }
-  void serialize(std::stringstream& stream) const override;
-  std::string to_string() const override;
-  bool is_enabled() override;
-  activity::ConditionVariableImpl* get_cond() const { return cond_; }
-  activity::MutexImpl* get_mutex() const { return mutex_; }
-  double get_timeout() const { return timeout_; }
-};
-
 class ActorJoinSimcall final : public SimcallObserver {
   s4u::ActorPtr const other_; // We need a Ptr to ensure access to the actor after its end, but Ptr requires s4u
   const double timeout_;
index 4382ec4..1dff82a 100644 (file)
@@ -106,4 +106,22 @@ bool BarrierObserver::is_enabled()
          (type_ == mc::Transition::Type::BARRIER_WAIT && acquisition_ != nullptr && acquisition_->granted_);
 }
 
+bool ConditionWaitSimcall::is_enabled()
+{
+  if (static bool warned = false; not warned) {
+    XBT_INFO("Using condition variables in model-checked code is still experimental. Use at your own risk");
+    warned = true;
+  }
+  return true;
+}
+void ConditionWaitSimcall::serialize(std::stringstream& stream) const
+{
+  THROW_UNIMPLEMENTED;
+}
+std::string ConditionWaitSimcall::to_string() const
+{
+  return "ConditionWait(cond_id:" + ptr_to_id<activity::ConditionVariableImpl const>(get_cond()) +
+         " mutex_id:" + std::to_string(get_mutex()->get_id()) + ")";
+}
+
 } // namespace simgrid::kernel::actor
index b707161..7c5ddc0 100644 (file)
@@ -7,6 +7,7 @@
 #define SIMGRID_MC_MUTEX_OBSERVER_HPP
 
 #include "simgrid/forward.h"
+#include "src/kernel/activity/ConditionVariableImpl.hpp"
 #include "src/kernel/activity/MutexImpl.hpp"
 #include "src/kernel/actor/ActorImpl.hpp"
 #include "src/kernel/actor/SimcallObserver.hpp"
@@ -80,6 +81,26 @@ public:
   double get_timeout() const { return timeout_; }
 };
 
+class ConditionWaitSimcall final : public ResultingSimcall<bool> {
+  mc::Transition::Type type_;
+  activity::ConditionVariableImpl* const cond_;
+  activity::MutexImpl* const mutex_;
+  const double timeout_;
+
+public:
+  ConditionWaitSimcall(ActorImpl* actor, activity::ConditionVariableImpl* cond, activity::MutexImpl* mutex,
+                       double timeout = -1.0)
+      : ResultingSimcall(actor, false), cond_(cond), mutex_(mutex), timeout_(timeout)
+  {
+  }
+  void serialize(std::stringstream& stream) const override;
+  std::string to_string() const override;
+  bool is_enabled() override;
+  activity::ConditionVariableImpl* get_cond() const { return cond_; }
+  activity::MutexImpl* get_mutex() const { return mutex_; }
+  double get_timeout() const { return timeout_; }
+};
+
 } // namespace simgrid::kernel::actor
 
 #endif
index db0e182..5355b1a 100644 (file)
@@ -9,7 +9,7 @@
 
 #include "src/kernel/activity/ActivityImpl.hpp"
 #include "src/kernel/activity/ConditionVariableImpl.hpp"
-#include "src/kernel/actor/SimcallObserver.hpp"
+#include "src/kernel/actor/SynchroObserver.hpp"
 
 #include <mutex>