A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
No need to switch data segment when process is finished.
[simgrid.git]
/
src
/
simix
/
ActorImpl.cpp
diff --git
a/src/simix/ActorImpl.cpp
b/src/simix/ActorImpl.cpp
index
a198260
..
adfd9e3
100644
(file)
--- a/
src/simix/ActorImpl.cpp
+++ b/
src/simix/ActorImpl.cpp
@@
-1,4
+1,4
@@
-/* Copyright (c) 2007-201
7
. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2007-201
8
. 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. */
/* 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. */
@@
-409,7
+409,7
@@
smx_actor_t SIMIX_process_attach(const char* name, void* data, const char* hostn
/* Tracing the process creation */
TRACE_msg_process_create(process->getName(), process->pid, process->host);
/* Tracing the process creation */
TRACE_msg_process_create(process->getName(), process->pid, process->host);
- auto context = dynamic_cast<simgrid::kernel::context::AttachContext*>(process->context);
+ auto
*
context = dynamic_cast<simgrid::kernel::context::AttachContext*>(process->context);
if (not context)
xbt_die("Not a suitable context");
if (not context)
xbt_die("Not a suitable context");
@@
-419,7
+419,7
@@
smx_actor_t SIMIX_process_attach(const char* name, void* data, const char* hostn
void SIMIX_process_detach()
{
void SIMIX_process_detach()
{
- auto context = dynamic_cast<simgrid::kernel::context::AttachContext*>(SIMIX_context_self());
+ auto
*
context = dynamic_cast<simgrid::kernel::context::AttachContext*>(SIMIX_context_self());
if (not context)
xbt_die("Not a suitable context");
if (not context)
xbt_die("Not a suitable context");
@@
-462,7
+462,8
@@
void SIMIX_process_kill(smx_actor_t process, smx_actor_t issuer) {
return;
}
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;
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
*/
}
/**
* \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);
{
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)
}
void SIMIX_process_change_host(smx_actor_t actor, sg_host_t dest)
@@
-649,14
+648,6
@@
const char* SIMIX_process_self_get_name() {
return process->name.c_str();
}
return process->name.c_str();
}
-smx_actor_t SIMIX_process_get_by_name(const char* name)
-{
- for (auto const& kv : simix_global->process_list)
- if (kv.second->name == name)
- return kv.second;
- return nullptr;
-}
-
void simcall_HANDLER_process_join(smx_simcall_t simcall, smx_actor_t process, double timeout)
{
if (process->finished) {
void simcall_HANDLER_process_join(smx_simcall_t simcall, smx_actor_t process, double timeout)
{
if (process->finished) {
@@
-678,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)
[](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;
},
intrusive_ptr_release(sleep);
return 0;
},
@@
-757,18
+748,11
@@
void SIMIX_process_yield(smx_actor_t self)
std::rethrow_exception(std::move(exception));
}
std::rethrow_exception(std::move(exception));
}
- if
(SMPI_switch_data_segment)
{
+ if
(SMPI_switch_data_segment && !self->finished)
{
SMPI_switch_data_segment(self->pid);
}
}
SMPI_switch_data_segment(self->pid);
}
}
-/* callback: termination */
-void SIMIX_process_exception_terminate(xbt_ex_t * e)
-{
- xbt_ex_display(e);
- xbt_abort();
-}
-
/** @brief Returns the list of processes to run. */
const std::vector<smx_actor_t>& simgrid::simix::process_get_runnable()
{
/** @brief Returns the list of processes to run. */
const std::vector<smx_actor_t>& simgrid::simix::process_get_runnable()
{