static void (*saved_callback)(smx_activity_t, void*, size_t);
saved_callback = callback;
smpi_comm_copy_data_callback = [](simgrid::kernel::activity::CommImpl* comm, void* buff, size_t size) {
- saved_callback(smx_activity_t(comm), buff, size);
+ saved_callback(comm, buff, size);
};
}
}
}
- simix_global->default_function = [executable, fdin_size](std::vector<std::string> args) {
+ simgrid::s4u::Engine::get_instance()->register_default([executable, fdin_size](std::vector<std::string> args) {
return std::function<void()>([executable, fdin_size, args] {
static std::size_t rank = 0;
// Copy the dynamic library:
xbt_assert(entry_point, "Could not resolve entry point");
smpi_run_entry_point(entry_point, executable, args);
});
- };
+ });
}
static void smpi_init_privatization_no_dlopen(const std::string& executable)
smpi_backup_global_memory_segment();
// Execute the same entry point for each simulated process:
- simix_global->default_function = [entry_point, executable](std::vector<std::string> args) {
+ simgrid::s4u::Engine::get_instance()->register_default([entry_point, executable](std::vector<std::string> args) {
return std::function<void()>(
[entry_point, executable, args] { smpi_run_entry_point(entry_point, executable, args); });
- };
+ });
}
int smpi_main(const char* executable, int argc, char* argv[])
if(smpi_init_sleep > 0)
simgrid::s4u::this_actor::sleep_for(smpi_init_sleep);
}
+
+void SMPI_thread_create() {
+ TRACE_smpi_init(simgrid::s4u::this_actor::get_pid());
+}