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
Restore handling of msg_global->process_data_cleanup.
[simgrid.git]
/
src
/
msg
/
msg_global.cpp
diff --git
a/src/msg/msg_global.cpp
b/src/msg/msg_global.cpp
index
ede87a5
..
d8e0f77
100644
(file)
--- a/
src/msg/msg_global.cpp
+++ b/
src/msg/msg_global.cpp
@@
-14,7
+14,10
@@
XBT_LOG_NEW_CATEGORY(msg, "All MSG categories");
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_kernel, msg, "Logging specific to MSG (kernel)");
XBT_LOG_NEW_CATEGORY(msg, "All MSG categories");
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_kernel, msg, "Logging specific to MSG (kernel)");
-MSG_Global_t msg_global = nullptr;
+bool MSG_Global_t::debug_multiple_use = false;
+
+MSG_Global_t* msg_global = nullptr;
+
static void MSG_exit();
/********************************* MSG **************************************/
static void MSG_exit();
/********************************* MSG **************************************/
@@
-29,25
+32,21
@@
void MSG_init_nocheck(int *argc, char **argv) {
TRACE_global_init();
if (not msg_global) {
TRACE_global_init();
if (not msg_global) {
-
- msg_global = new s_MSG_Global_t();
-
- msg_global->debug_multiple_use = false;
- simgrid::config::bind_flag(msg_global->debug_multiple_use, "msg/debug-multiple-use",
+ simgrid::config::bind_flag(MSG_Global_t::debug_multiple_use, "msg/debug-multiple-use",
"Print backtraces of both processes when there is a conflict of multiple use of a task");
SIMIX_global_init(argc, argv);
"Print backtraces of both processes when there is a conflict of multiple use of a task");
SIMIX_global_init(argc, argv);
+ msg_global = new MSG_Global_t();
+
msg_global->sent_msg = 0;
msg_global->task_copy_callback = nullptr;
msg_global->process_data_cleanup = nullptr;
msg_global->sent_msg = 0;
msg_global->task_copy_callback = nullptr;
msg_global->process_data_cleanup = nullptr;
-
- simgrid::s4u::Actor::on_destruction.connect([](simgrid::s4u::ActorPtr actor) {
+ simgrid::s4u::Actor::on_termination.connect([](simgrid::s4u::Actor const& actor) {
// free the data if a function was provided
// free the data if a function was provided
- void* userdata =
actor->get_impl()->get_user_data(
);
- if (userdata && msg_global->process_data_cleanup)
{
+ void* userdata =
sg_actor_data(&actor
);
+ if (userdata && msg_global->process_data_cleanup)
msg_global->process_data_cleanup(userdata);
msg_global->process_data_cleanup(userdata);
- }
});
}
});
}
@@
-56,7
+55,7
@@
void MSG_init_nocheck(int *argc, char **argv) {
MC_ignore_heap(&(msg_global->sent_msg), sizeof(msg_global->sent_msg));
}
MC_ignore_heap(&(msg_global->sent_msg), sizeof(msg_global->sent_msg));
}
- if (simgrid::config::get_value<bool>("clean-atexit"))
+ if (simgrid::config::get_value<bool>("
debug/
clean-atexit"))
atexit(MSG_exit);
}
atexit(MSG_exit);
}