Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
s/process/actor/ A lot remains TBD about it
[simgrid.git] / src / simix / ActorImpl.cpp
index 4b16464..353b70d 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2007-2019. The SimGrid Team. All rights reserved.          */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
@@ -23,7 +23,7 @@
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_process, simix, "Logging specific to SIMIX (process)");
 
-unsigned long simix_process_maxpid = 0;
+static unsigned long simix_process_maxpid = 0;
 
 /**
  * @brief Returns the current agent.
@@ -36,7 +36,7 @@ smx_actor_t SIMIX_process_self()
 {
   smx_context_t self_context = simgrid::kernel::context::Context::self();
 
-  return (self_context != nullptr) ? self_context->process() : nullptr;
+  return (self_context != nullptr) ? self_context->get_actor() : nullptr;
 }
 
 /**
@@ -301,8 +301,6 @@ void create_maestro(simgrid::simix::ActorCode code)
   if (not code) {
     maestro->context_ = SIMIX_context_new(simgrid::simix::ActorCode(), nullptr, maestro);
   } else {
-    if (not simix_global)
-      xbt_die("simix is not initialized, please call MSG_init first");
     maestro->context_ = simix_global->context_factory->create_maestro(code, maestro);
   }
 
@@ -369,9 +367,8 @@ smx_actor_t SIMIX_process_create(std::string name, simgrid::simix::ActorCode cod
   simix_global->process_to_run.push_back(process);
   intrusive_ptr_add_ref(process);
 
-  /* The onCreation() signal must be delayed until there, where the pid and everything is set */
-  simgrid::s4u::ActorPtr tmp = process->iface(); // Passing this directly to onCreation will lead to crashes
-  simgrid::s4u::Actor::on_creation(tmp);
+  /* The on_creation() signal must be delayed until there, where the pid and everything is set */
+  simgrid::s4u::Actor::on_creation(process->iface());
 
   return process;
 }
@@ -433,7 +430,7 @@ void SIMIX_process_detach()
   if (context == nullptr)
     xbt_die("Not a suitable context");
 
-  SIMIX_process_cleanup(context->process());
+  SIMIX_process_cleanup(context->get_actor());
   context->attach_stop();
 }
 
@@ -472,8 +469,8 @@ void SIMIX_process_kill(smx_actor_t actor, smx_actor_t issuer)
     return;
   }
 
-  XBT_DEBUG("Actor '%s'@%s is killing actor '%s'@%s", issuer->get_cname(),
-            (issuer->host_ == nullptr ? "(null)" : issuer->host_->get_cname()), actor->get_cname(),
+  XBT_DEBUG("Actor '%s'@%s is killing actor '%s'@%s", issuer == nullptr ? "(null)" : issuer->get_cname(),
+            (issuer == nullptr || issuer->host_ == nullptr ? "(null)" : issuer->host_->get_cname()), actor->get_cname(),
             actor->host_->get_cname());
 
   actor->context_->iwannadie = true;