Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
No need to switch data segment when process is finished.
[simgrid.git] / src / simix / ActorImpl.cpp
index a4a974f..adfd9e3 100644 (file)
@@ -462,7 +462,8 @@ void SIMIX_process_kill(smx_actor_t process, smx_actor_t issuer) {
     return;
   }
 
-  XBT_DEBUG("Killing process %s@%s", process->getCname(), process->host->getCname());
+  XBT_DEBUG("Actor '%s'@%s is killing actor '%s'@%s", issuer->getCname(), issuer->host->getCname(), process->getCname(),
+            process->host->getCname());
 
   process->context->iwannadie = 1;
   process->blocked = 0;
@@ -574,21 +575,19 @@ void SIMIX_process_throw(smx_actor_t process, xbt_errcat_t cat, int value, const
 
 }
 
-void simcall_HANDLER_process_killall(smx_simcall_t simcall, int reset_pid) {
-  SIMIX_process_killall(simcall->issuer, reset_pid);
+void simcall_HANDLER_process_killall(smx_simcall_t simcall)
+{
+  SIMIX_process_killall(simcall->issuer);
 }
 /**
  * \brief Kills all running processes.
  * \param issuer this one will not be killed
  */
-void SIMIX_process_killall(smx_actor_t issuer, int reset_pid)
+void SIMIX_process_killall(smx_actor_t issuer)
 {
   for (auto const& kv : simix_global->process_list)
     if (kv.second != issuer)
       SIMIX_process_kill(kv.second, issuer);
-
-  if (reset_pid > 0)
-    simix_process_maxpid = reset_pid;
 }
 
 void SIMIX_process_change_host(smx_actor_t actor, sg_host_t dest)
@@ -670,7 +669,7 @@ smx_activity_t SIMIX_process_join(smx_actor_t issuer, smx_actor_t process, doubl
                         [](void*, void* arg) {
                           auto sleep = static_cast<simgrid::kernel::activity::SleepImpl*>(arg);
                           if (sleep->surf_sleep)
-                            sleep->surf_sleep->finish(simgrid::surf::Action::State::done);
+                            sleep->surf_sleep->finish(simgrid::kernel::resource::Action::State::done);
                           intrusive_ptr_release(sleep);
                           return 0;
                         },
@@ -749,7 +748,7 @@ void SIMIX_process_yield(smx_actor_t self)
     std::rethrow_exception(std::move(exception));
   }
 
-  if(SMPI_switch_data_segment){
+  if (SMPI_switch_data_segment && !self->finished) {
     SMPI_switch_data_segment(self->pid);
   }
 }