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
this has been bugging me for a while
[simgrid.git]
/
src
/
simix
/
ActorImpl.cpp
diff --git
a/src/simix/ActorImpl.cpp
b/src/simix/ActorImpl.cpp
index a1982608a4487da930e999d3539fab96e5fab43b..95cec9d9f357a3847f2606ede4d381075758c1b2 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. */
@@
-349,8
+349,8
@@
smx_actor_t SIMIX_process_create(const char* name, std::function<void()> code, v
simix_global->process_to_run.push_back(process);
intrusive_ptr_add_ref(process);
/* Tracing the process creation */
simix_global->process_to_run.push_back(process);
intrusive_ptr_add_ref(process);
/* Tracing the process creation */
- TRACE_msg_process_create(process->getName(), process->pid, process->host);
-
+ if (TRACE_actor_is_enabled())
+ simgrid::instr::Container::byName(process->host->getName())->createChild(instr_pid(process->ciface()), "ACTOR");
/* 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::onCreation(tmp);
/* 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::onCreation(tmp);
@@
-407,9
+407,10
@@
smx_actor_t SIMIX_process_attach(const char* name, void* data, const char* hostn
intrusive_ptr_add_ref(process);
/* Tracing the process creation */
intrusive_ptr_add_ref(process);
/* Tracing the process creation */
- TRACE_msg_process_create(process->getName(), process->pid, process->host);
+ if (TRACE_actor_is_enabled())
+ simgrid::instr::Container::byName(process->host->getName())->createChild(instr_pid(process->ciface()), "ACTOR");
- 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
+420,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
+463,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
+576,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
+649,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
+670,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
+749,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)
{
- SMPI_switch_data_segment(self->
pid
);
+ if
(SMPI_switch_data_segment && not self->finished)
{
+ SMPI_switch_data_segment(self->
iface()
);
}
}
}
}
-/* 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()
{