X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f01052cf1a094dd5df8869e4b26431b1efb6abb0..0af9f2144555a92e4a2f4cd47a39210c4e64d322:/src/instr/instr_config.cpp diff --git a/src/instr/instr_config.cpp b/src/instr/instr_config.cpp index 3c22b9b5ce..c13fdffc99 100644 --- a/src/instr/instr_config.cpp +++ b/src/instr/instr_config.cpp @@ -1,19 +1,16 @@ -/* Copyright (c) 2010-2021. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2010-2023. 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. */ -#include "include/xbt/config.hpp" -#include "simgrid/Exception.hpp" -#include "simgrid/s4u/Engine.hpp" -#include "simgrid/version.h" +#include +#include + #include "src/instr/instr_private.hpp" -#include "surf/surf.hpp" +#include "xbt/config.hpp" +#include "xbt/xbt_os_time.h" #include -#ifdef WIN32 -#include // _mkdir -#endif #include #include @@ -23,7 +20,7 @@ XBT_LOG_NEW_CATEGORY(instr, "Logging the behavior of the tracing system (used fo XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_config, instr, "Configuration"); std::ofstream tracing_file; -std::map tracing_files; // TI specific +static std::map tracing_files; // TI specific constexpr char OPT_TRACING_BASIC[] = "tracing/basic"; constexpr char OPT_TRACING_COMMENT_FILE[] = "tracing/comment-file"; @@ -37,7 +34,6 @@ static simgrid::config::Flag trace_enabled{ static simgrid::config::Flag trace_actor_enabled{ "tracing/actor", - {"tracing/msg/process"}, // XBT_ATTRIB_DEPRECATED_v330(option alias) "Trace the behavior of all categorized actors, grouping them by host. " "Can be used to track actor location if the simulator does actor migration.", false}; @@ -207,11 +203,10 @@ void TRACE_help() " within the same Autonomous System (AS)."); } -namespace simgrid { -namespace instr { +namespace simgrid::instr { static bool trace_active = false; TraceFormat trace_format = TraceFormat::Paje; -int trace_precision; +static int trace_precision; /************* * Callbacks * @@ -242,7 +237,7 @@ static void on_container_creation_paje(const Container& c) stream << "rank-" << stoi(c.get_name().substr(5)) - 1 << "\""; XBT_DEBUG("Dump %s", stream.str().c_str()); - tracing_file << stream.str() << std::endl; + tracing_file << stream.str() << '\n'; } static void on_container_destruction_paje(const Container& c) @@ -258,7 +253,7 @@ static void on_container_destruction_paje(const Container& c) stream << std::fixed << std::setprecision(trace_precision) << PajeEventType::DestroyContainer << " "; stream << timestamp << " " << c.get_type()->get_id() << " " << c.get_id(); XBT_DEBUG("Dump %s", stream.str().c_str()); - tracing_file << stream.str() << std::endl; + tracing_file << stream.str() << '\n'; } } @@ -278,14 +273,10 @@ static void on_container_creation_ti(const Container& c) if (not simgrid::config::get_value("tracing/smpi/format/ti-one-file") || ti_unique_file == nullptr) { std::string folder_name = simgrid::config::get_value("tracing/filename") + "_files"; std::string filename = folder_name + "/" + std::to_string(prefix) + "_" + c.get_name() + ".txt"; -#ifdef WIN32 - _mkdir(folder_name.c_str()); -#else - mkdir(folder_name.c_str(), S_IRWXU | S_IRWXG | S_IRWXO); -#endif + mkdir(folder_name.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); ti_unique_file = new std::ofstream(filename.c_str(), std::ofstream::out); xbt_assert(not ti_unique_file->fail(), "Tracefile %s could not be opened for writing", filename.c_str()); - tracing_file << filename << std::endl; + tracing_file << filename << '\n'; } tracing_files.insert({&c, ti_unique_file}); } @@ -310,7 +301,7 @@ static void on_entity_value_creation(const EntityValue& value) if (not value.get_color().empty()) stream << " \"" << value.get_color() << "\""; XBT_DEBUG("Dump %s", stream.str().c_str()); - tracing_file << stream.str() << std::endl; + tracing_file << stream.str() << '\n'; } static void on_event_creation(PajeEvent& event) @@ -325,13 +316,13 @@ static void on_event_creation(PajeEvent& event) static void on_event_destruction(const PajeEvent& event) { XBT_DEBUG("Dump %s", event.stream_.str().c_str()); - tracing_file << event.stream_.str() << std::endl; + tracing_file << event.stream_.str() << '\n'; } static void on_state_event_destruction(const StateEvent& event) { if (event.has_extra()) - *tracing_files.at(event.get_container()) << event.stream_.str() << std::endl; + *tracing_files.at(event.get_container()) << event.stream_.str() << '\n'; } static void on_type_creation(const Type& type, PajeEventType event_type) @@ -346,7 +337,7 @@ static void on_type_creation(const Type& type, PajeEventType event_type) if (type.is_colored()) stream << " \"" << type.get_color() << "\""; XBT_DEBUG("Dump %s", stream.str().c_str()); - tracing_file << stream.str() << std::endl; + tracing_file << stream.str() << '\n'; } static void on_link_type_creation(const Type& type, const Type& source, const Type& dest) @@ -357,7 +348,7 @@ static void on_link_type_creation(const Type& type, const Type& source, const Ty stream << PajeEventType::DefineLinkType << " " << type.get_id() << " " << type.get_parent()->get_id(); stream << " " << source.get_id() << " " << dest.get_id() << " " << type.get_name(); XBT_DEBUG("Dump %s", stream.str().c_str()); - tracing_file << stream.str() << std::endl; + tracing_file << stream.str() << '\n'; } static void on_simulation_start() @@ -385,29 +376,28 @@ static void on_simulation_start() XBT_DEBUG("Filename %s is open for writing", filename.c_str()); if (format == "Paje") { - Container::on_creation.connect(on_container_creation_paje); - Container::on_destruction.connect(on_container_destruction_paje); - EntityValue::on_creation.connect(on_entity_value_creation); - Type::on_creation.connect(on_type_creation); - LinkType::on_creation.connect(on_link_type_creation); - PajeEvent::on_creation.connect(on_event_creation); - PajeEvent::on_destruction.connect(on_event_destruction); + Container::on_creation_cb(on_container_creation_paje); + Container::on_destruction_cb(on_container_destruction_paje); + EntityValue::on_creation_cb(on_entity_value_creation); + Type::on_creation_cb(on_type_creation); + LinkType::on_creation_cb(on_link_type_creation); + PajeEvent::on_creation_cb(on_event_creation); + PajeEvent::on_destruction_cb(on_event_destruction); paje::dump_generator_version(); /* output one line comment */ - std::string comment = simgrid::config::get_value("tracing/comment"); - if (not comment.empty()) - tracing_file << "# " << comment << std::endl; + if (auto comment = simgrid::config::get_value("tracing/comment"); not comment.empty()) + tracing_file << "# " << comment << '\n'; /* output comment file */ paje::dump_comment_file(config::get_value(OPT_TRACING_COMMENT_FILE)); paje::dump_header(trace_basic, TRACE_display_sizes()); } else { trace_format = TraceFormat::Ti; - Container::on_creation.connect(on_container_creation_ti); - Container::on_destruction.connect(on_container_destruction_ti); - StateEvent::on_destruction.connect(on_state_event_destruction); + Container::on_creation_cb(on_container_creation_ti); + Container::on_destruction_cb(on_container_destruction_ti); + StateEvent::on_destruction_cb(on_state_event_destruction); } trace_active = true; @@ -420,7 +410,7 @@ static void on_simulation_end() return; /* dump trace buffer */ - last_timestamp_to_dump = surf_get_clock(); + last_timestamp_to_dump = simgrid_get_clock(); dump_buffer(true); const Type* root_type = Container::get_root()->get_type(); @@ -465,10 +455,9 @@ void init() 6); /* Connect Engine callbacks */ - s4u::Engine::on_platform_creation.connect(on_simulation_start); - s4u::Engine::on_time_advance.connect([](double /*time_delta*/) { dump_buffer(false); }); - s4u::Engine::on_deadlock.connect(on_simulation_end); - s4u::Engine::on_simulation_end.connect(on_simulation_end); + s4u::Engine::on_platform_creation_cb(on_simulation_start); + s4u::Engine::on_time_advance_cb([](double /*time_delta*/) { dump_buffer(false); }); + s4u::Engine::on_deadlock_cb(on_simulation_end); + s4u::Engine::on_simulation_end_cb(on_simulation_end); } -} // namespace instr -} // namespace simgrid +} // namespace simgrid::instr