Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Make maxpid a static member of ActorIDTrait.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Thu, 24 Mar 2022 15:33:18 +0000 (16:33 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Thu, 24 Mar 2022 22:08:25 +0000 (23:08 +0100)
src/kernel/actor/ActorImpl.cpp
src/kernel/actor/ActorImpl.hpp
src/mc/mc_record.cpp
src/mc/remote/AppSide.cpp

index ef37508..a9e747f 100644 (file)
@@ -39,16 +39,9 @@ namespace kernel {
 namespace actor {
 
 /*------------------------- [ ActorIDTrait ] -------------------------*/
-static unsigned long maxpid = 0;
-unsigned long get_maxpid()
-{
-  return maxpid;
-}
-unsigned long* get_maxpid_addr()
-{
-  return &maxpid;
-}
-ActorIDTrait::ActorIDTrait(const std::string& name, aid_t ppid) : name_(name), pid_(maxpid++), ppid_(ppid) {}
+unsigned long ActorIDTrait::maxpid_ = 0;
+
+ActorIDTrait::ActorIDTrait(const std::string& name, aid_t ppid) : name_(name), pid_(maxpid_++), ppid_(ppid) {}
 
 ActorImpl* ActorImpl::self()
 {
index d822f6d..f27b624 100644 (file)
@@ -27,15 +27,19 @@ class XBT_PUBLIC ActorIDTrait {
   aid_t pid_         = 0;
   aid_t ppid_        = -1;
 
+  static unsigned long maxpid_;
+
 public:
   explicit ActorIDTrait(const std::string& name, aid_t ppid);
   const xbt::string& get_name() const { return name_; }
   const char* get_cname() const { return name_.c_str(); }
   aid_t get_pid() const { return pid_; }
   aid_t get_ppid() const { return ppid_; }
+
+  static unsigned long get_maxpid() { return maxpid_; }
+  // In MC mode, the application sends this pointer to the MC
+  static unsigned long* get_maxpid_addr() { return &maxpid_; }
 };
-XBT_PUBLIC unsigned long get_maxpid();
-XBT_PUBLIC unsigned long* get_maxpid_addr(); // In MC mode, the application sends this pointers to the MC
 
 /*------------------------- [ ActorRestartingTrait ] -------------------------*/
 class XBT_PUBLIC ActorRestartingTrait {
index 895f158..5d65db9 100644 (file)
@@ -43,7 +43,7 @@ void RecordTrace::replay() const
 
 void simgrid::mc::RecordTrace::replay(const std::string& path_string)
 {
-  simgrid::mc::processes_time.resize(simgrid::kernel::actor::get_maxpid());
+  simgrid::mc::processes_time.resize(kernel::actor::ActorIDTrait::get_maxpid());
   simgrid::mc::RecordTrace trace(path_string.c_str());
   trace.replay();
   for (auto* item : trace.transitions_)
index 5aad994..abf825c 100644 (file)
@@ -75,7 +75,7 @@ AppSide* AppSide::initialize(xbt_dynar_t actors_addr)
              strerror(errno));
 
   s_mc_message_initial_addresses_t message{MessageType::INITIAL_ADDRESSES, mmalloc_preinit(),
-                                           kernel::actor::get_maxpid_addr(), actors_addr};
+                                           kernel::actor::ActorIDTrait::get_maxpid_addr(), actors_addr};
   xbt_assert(instance_->channel_.send(message) == 0, "Could not send the initial message with addresses.");
 
   instance_->handle_messages();
@@ -200,7 +200,7 @@ void AppSide::handle_messages() const
 
 void AppSide::main_loop() const
 {
-  simgrid::mc::processes_time.resize(simgrid::kernel::actor::get_maxpid());
+  simgrid::mc::processes_time.resize(simgrid::kernel::actor::ActorIDTrait::get_maxpid());
   MC_ignore_heap(simgrid::mc::processes_time.data(),
                  simgrid::mc::processes_time.size() * sizeof(simgrid::mc::processes_time[0]));