X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/77bbf3027c4240a2e833209a3a3f186589da8577..HEAD:/src/instr/instr_paje_header.cpp diff --git a/src/instr/instr_paje_header.cpp b/src/instr/instr_paje_header.cpp index 8e293adbb8..d69e4ddf15 100644 --- a/src/instr/instr_paje_header.cpp +++ b/src/instr/instr_paje_header.cpp @@ -1,264 +1,194 @@ -/* Copyright (c) 2010, 2012-2017. 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 "simgrid/sg_config.h" +#include "simgrid/version.h" #include "src/instr/instr_private.hpp" +#include "src/smpi/include/private.hpp" +#include +#include -XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_paje_header, instr, "Paje tracing event system (header)"); +extern std::ofstream tracing_file; +namespace simgrid::instr::paje { -extern FILE *tracing_file; - -static void TRACE_header_PajeDefineContainerType(bool basic) -{ - fprintf(tracing_file, "%%EventDef PajeDefineContainerType %u\n", simgrid::instr::PAJE_DefineContainerType); - fprintf(tracing_file, "%% Alias string\n"); - if (basic){ - fprintf(tracing_file, "%% ContainerType string\n"); - }else{ - fprintf(tracing_file, "%% Type string\n"); - } - fprintf(tracing_file, "%% Name string\n"); - fprintf(tracing_file, "%%EndEventDef\n"); -} - -static void TRACE_header_PajeDefineVariableType(bool basic) +void dump_generator_version() { - fprintf(tracing_file, "%%EventDef PajeDefineVariableType %u\n", simgrid::instr::PAJE_DefineVariableType); - fprintf(tracing_file, "%% Alias string\n"); - if (basic){ - fprintf(tracing_file, "%% ContainerType string\n"); - }else{ - fprintf(tracing_file, "%% Type string\n"); + tracing_file << "#This file was generated using SimGrid-" << SIMGRID_VERSION_MAJOR << "." << SIMGRID_VERSION_MINOR + << "." << SIMGRID_VERSION_PATCH << '\n'; + tracing_file << "#["; + for (auto const& str : simgrid::s4u::Engine::get_instance()->get_cmdline()) { + tracing_file << str << " "; } - fprintf(tracing_file, "%% Name string\n"); - fprintf(tracing_file, "%% Color color\n"); - fprintf(tracing_file, "%%EndEventDef\n"); -} - -static void TRACE_header_PajeDefineStateType(bool basic) -{ - fprintf(tracing_file, "%%EventDef PajeDefineStateType %u\n", simgrid::instr::PAJE_DefineStateType); - fprintf(tracing_file, "%% Alias string\n"); - if (basic){ - fprintf(tracing_file, "%% ContainerType string\n"); - }else{ - fprintf(tracing_file, "%% Type string\n"); - } - fprintf(tracing_file, "%% Name string\n"); - fprintf(tracing_file, "%%EndEventDef\n"); -} - -static void TRACE_header_PajeDefineEventType(bool basic) -{ - fprintf(tracing_file, "%%EventDef PajeDefineEventType %u\n", simgrid::instr::PAJE_DefineEventType); - fprintf(tracing_file, "%% Alias string\n"); - if (basic){ - fprintf(tracing_file, "%% ContainerType string\n"); - }else{ - fprintf(tracing_file, "%% Type string\n"); - } - fprintf(tracing_file, "%% Name string\n"); - fprintf(tracing_file, "%%EndEventDef\n"); -} - -static void TRACE_header_PajeDefineLinkType(bool basic) -{ - fprintf(tracing_file, "%%EventDef PajeDefineLinkType %u\n", simgrid::instr::PAJE_DefineLinkType); - fprintf(tracing_file, "%% Alias string\n"); - if (basic){ - fprintf(tracing_file, "%% ContainerType string\n"); - fprintf(tracing_file, "%% SourceContainerType string\n"); - fprintf(tracing_file, "%% DestContainerType string\n"); - }else{ - fprintf(tracing_file, "%% Type string\n"); - fprintf(tracing_file, "%% StartContainerType string\n"); - fprintf(tracing_file, "%% EndContainerType string\n"); - } - fprintf(tracing_file, "%% Name string\n"); - fprintf(tracing_file, "%%EndEventDef\n"); -} - -static void TRACE_header_PajeDefineEntityValue(bool basic) -{ - fprintf(tracing_file, "%%EventDef PajeDefineEntityValue %u\n", simgrid::instr::PAJE_DefineEntityValue); - fprintf(tracing_file, "%% Alias string\n"); - if (basic){ - fprintf(tracing_file, "%% EntityType string\n"); - }else{ - fprintf(tracing_file, "%% Type string\n"); - } - fprintf(tracing_file, "%% Name string\n"); - fprintf(tracing_file, "%% Color color\n"); - fprintf(tracing_file, "%%EndEventDef\n"); -} - -static void TRACE_header_PajeCreateContainer() -{ - fprintf(tracing_file, "%%EventDef PajeCreateContainer %u\n", simgrid::instr::PAJE_CreateContainer); - fprintf(tracing_file, "%% Time date\n"); - fprintf(tracing_file, "%% Alias string\n"); - fprintf(tracing_file, "%% Type string\n"); - fprintf(tracing_file, "%% Container string\n"); - fprintf(tracing_file, "%% Name string\n"); - fprintf(tracing_file, "%%EndEventDef\n"); -} - -static void TRACE_header_PajeDestroyContainer() -{ - fprintf(tracing_file, "%%EventDef PajeDestroyContainer %u\n", simgrid::instr::PAJE_DestroyContainer); - fprintf(tracing_file, "%% Time date\n"); - fprintf(tracing_file, "%% Type string\n"); - fprintf(tracing_file, "%% Name string\n"); - fprintf(tracing_file, "%%EndEventDef\n"); -} - -static void TRACE_header_PajeSetVariable() -{ - fprintf(tracing_file, "%%EventDef PajeSetVariable %u\n", simgrid::instr::PAJE_SetVariable); - fprintf(tracing_file, "%% Time date\n"); - fprintf(tracing_file, "%% Type string\n"); - fprintf(tracing_file, "%% Container string\n"); - fprintf(tracing_file, "%% Value double\n"); - fprintf(tracing_file, "%%EndEventDef\n"); + tracing_file << "]\n"; } -static void TRACE_header_PajeAddVariable() +void dump_comment_file(const std::string& filename) { - fprintf(tracing_file, "%%EventDef PajeAddVariable %u\n", simgrid::instr::PAJE_AddVariable); - fprintf(tracing_file, "%% Time date\n"); - fprintf(tracing_file, "%% Type string\n"); - fprintf(tracing_file, "%% Container string\n"); - fprintf(tracing_file, "%% Value double\n"); - fprintf(tracing_file, "%%EndEventDef\n"); -} + if (filename.empty()) + return; + std::ifstream fs(filename.c_str(), std::ifstream::in); -static void TRACE_header_PajeSubVariable() -{ - fprintf(tracing_file, "%%EventDef PajeSubVariable %u\n", simgrid::instr::PAJE_SubVariable); - fprintf(tracing_file, "%% Time date\n"); - fprintf(tracing_file, "%% Type string\n"); - fprintf(tracing_file, "%% Container string\n"); - fprintf(tracing_file, "%% Value double\n"); - fprintf(tracing_file, "%%EndEventDef\n"); -} + if (fs.fail()) + throw TracingError(XBT_THROW_POINT, + xbt::string_printf("Comment file %s could not be opened for reading.", filename.c_str())); -static void TRACE_header_PajeSetState() -{ - fprintf(tracing_file, "%%EventDef PajeSetState %u\n", simgrid::instr::PAJE_SetState); - fprintf(tracing_file, "%% Time date\n"); - fprintf(tracing_file, "%% Type string\n"); - fprintf(tracing_file, "%% Container string\n"); - fprintf(tracing_file, "%% Value string\n"); - fprintf(tracing_file, "%%EndEventDef\n"); + std::string line; + while (std::getline(fs, line)) + tracing_file << "# " << line; + fs.close(); } -static void TRACE_header_PajePushState(int size) +void dump_header(bool basic, bool display_sizes) { - fprintf(tracing_file, "%%EventDef PajePushState %u\n", simgrid::instr::PAJE_PushState); - fprintf(tracing_file, "%% Time date\n"); - fprintf(tracing_file, "%% Type string\n"); - fprintf(tracing_file, "%% Container string\n"); - fprintf(tracing_file, "%% Value string\n"); - if (size) fprintf(tracing_file, "%% Size int\n"); + // Types + tracing_file << "%EventDef PajeDefineContainerType " << PajeEventType::DefineContainerType << '\n'; + tracing_file << "% Alias string\n"; + if (basic) + tracing_file << "% ContainerType string\n"; + else + tracing_file << "% Type string\n"; + + tracing_file << "% Name string\n"; + tracing_file << "%EndEventDef\n"; + + tracing_file << "%EventDef PajeDefineVariableType " << PajeEventType::DefineVariableType << '\n'; + tracing_file << "% Alias string\n"; + tracing_file << "% " << (basic ? "Container" : "") << "Type string\n"; + tracing_file << "% Name string\n"; + tracing_file << "% Color color\n"; + tracing_file << "%EndEventDef\n"; + + tracing_file << "%EventDef PajeDefineStateType " << PajeEventType::DefineStateType << '\n'; + tracing_file << "% Alias string\n"; + tracing_file << "% " << (basic ? "Container" : "") << "Type string\n"; + tracing_file << "% Name string\n"; + tracing_file << "%EndEventDef\n"; + + tracing_file << "%EventDef PajeDefineEventType " << PajeEventType::DefineEventType << '\n'; + tracing_file << "% Alias string\n"; + tracing_file << "% " << (basic ? "Container" : "") << "Type string\n"; + tracing_file << "% Name string\n"; + tracing_file << "%EndEventDef\n"; + + tracing_file << "%EventDef PajeDefineLinkType " << PajeEventType::DefineLinkType << '\n'; + tracing_file << "% Alias string\n"; + tracing_file << "% " << (basic ? "Container" : "") << "Type string\n"; + tracing_file << "% " << (basic ? "Source" : "Start") << "ContainerType string\n"; + tracing_file << "% " << (basic ? "Dest" : "End") << "ContainerType string\n"; + tracing_file << "% Name string\n"; + tracing_file << "%EndEventDef\n"; + + // EntityValue + tracing_file << "%EventDef PajeDefineEntityValue " << PajeEventType::DefineEntityValue << '\n'; + tracing_file << "% Alias string\n"; + tracing_file << "% " << (basic ? "Entity" : "") << "Type string\n"; + tracing_file << "% Name string\n"; + tracing_file << "% Color color\n"; + tracing_file << "%EndEventDef\n"; + + // Container + tracing_file << "%EventDef PajeCreateContainer " << PajeEventType::CreateContainer << '\n'; + tracing_file << "% Time date\n"; + tracing_file << "% Alias string\n"; + tracing_file << "% Type string\n"; + tracing_file << "% Container string\n"; + tracing_file << "% Name string\n"; + tracing_file << "%EndEventDef\n"; + + tracing_file << "%EventDef PajeDestroyContainer " << PajeEventType::DestroyContainer << '\n'; + tracing_file << "% Time date\n"; + tracing_file << "% Type string\n"; + tracing_file << "% Name string\n"; + tracing_file << "%EndEventDef\n"; + + // Variable + tracing_file << "%EventDef PajeSetVariable " << PajeEventType::SetVariable << '\n'; + tracing_file << "% Time date\n"; + tracing_file << "% Type string\n"; + tracing_file << "% Container string\n"; + tracing_file << "% Value double\n"; + tracing_file << "%EndEventDef\n"; + + tracing_file << "%EventDef PajeAddVariable " << PajeEventType::AddVariable << '\n'; + tracing_file << "% Time date\n"; + tracing_file << "% Type string\n"; + tracing_file << "% Container string\n"; + tracing_file << "% Value double\n"; + tracing_file << "%EndEventDef\n"; + + tracing_file << "%EventDef PajeSubVariable " << PajeEventType::SubVariable << '\n'; + tracing_file << "% Time date\n"; + tracing_file << "% Type string\n"; + tracing_file << "% Container string\n"; + tracing_file << "% Value double\n"; + tracing_file << "%EndEventDef\n"; + + // State + tracing_file << "%EventDef PajeSetState " << PajeEventType::SetState << '\n'; + tracing_file << "% Time date\n"; + tracing_file << "% Type string\n"; + tracing_file << "% Container string\n"; + tracing_file << "% Value string\n"; + tracing_file << "%EndEventDef\n"; + + tracing_file << "%EventDef PajePushState " << PajeEventType::PushState << '\n'; + tracing_file << "% Time date\n"; + tracing_file << "% Type string\n"; + tracing_file << "% Container string\n"; + tracing_file << "% Value string\n"; + if (display_sizes) + tracing_file << "% Size int\n"; #if HAVE_SMPI - if (xbt_cfg_get_boolean("smpi/trace-call-location")) { - /** - * paje currently (May 2016) uses "Filename" and "Linenumber" as - * reserved words. We cannot use them... - */ - fprintf(tracing_file, "%% Fname string\n"); - fprintf(tracing_file, "%% Lnumber int\n"); + if (smpi_cfg_trace_call_location()) { + /* paje currently (May 2016) uses "Filename" and "Linenumber" as reserved words. We cannot use them... */ + tracing_file << "% Fname string\n"; + tracing_file << "% Lnumber int\n"; } #endif - fprintf(tracing_file, "%%EndEventDef\n"); -} - -static void TRACE_header_PajePopState() -{ - fprintf(tracing_file, "%%EventDef PajePopState %u\n", simgrid::instr::PAJE_PopState); - fprintf(tracing_file, "%% Time date\n"); - fprintf(tracing_file, "%% Type string\n"); - fprintf(tracing_file, "%% Container string\n"); - fprintf(tracing_file, "%%EndEventDef\n"); -} - -static void TRACE_header_PajeResetState(bool basic) -{ - if (basic) - return; - - fprintf(tracing_file, "%%EventDef PajeResetState %u\n", simgrid::instr::PAJE_ResetState); - fprintf(tracing_file, "%% Time date\n"); - fprintf(tracing_file, "%% Type string\n"); - fprintf(tracing_file, "%% Container string\n"); - fprintf(tracing_file, "%%EndEventDef\n"); -} - -static void TRACE_header_PajeStartLink(bool basic, int size) -{ - fprintf(tracing_file, "%%EventDef PajeStartLink %u\n", simgrid::instr::PAJE_StartLink); - fprintf(tracing_file, "%% Time date\n"); - fprintf(tracing_file, "%% Type string\n"); - fprintf(tracing_file, "%% Container string\n"); - fprintf(tracing_file, "%% Value string\n"); - if (basic){ - fprintf(tracing_file, "%% SourceContainer string\n"); - }else{ - fprintf(tracing_file, "%% StartContainer string\n"); - } - fprintf(tracing_file, "%% Key string\n"); - if (size) fprintf(tracing_file, "%% Size int\n"); - fprintf(tracing_file, "%%EndEventDef\n"); -} - -static void TRACE_header_PajeEndLink(bool basic) -{ - fprintf(tracing_file, "%%EventDef PajeEndLink %u\n", simgrid::instr::PAJE_EndLink); - fprintf(tracing_file, "%% Time date\n"); - fprintf(tracing_file, "%% Type string\n"); - fprintf(tracing_file, "%% Container string\n"); - fprintf(tracing_file, "%% Value string\n"); - if (basic){ - fprintf(tracing_file, "%% DestContainer string\n"); - }else{ - fprintf(tracing_file, "%% EndContainer string\n"); + tracing_file << "%EndEventDef\n"; + + tracing_file << "%EventDef PajePopState " << PajeEventType::PopState << '\n'; + tracing_file << "% Time date\n"; + tracing_file << "% Type string\n"; + tracing_file << "% Container string\n"; + tracing_file << "%EndEventDef\n"; + + if (not basic) { + tracing_file << "%EventDef PajeResetState " << PajeEventType::ResetState << '\n'; + tracing_file << "% Time date\n"; + tracing_file << "% Type string\n"; + tracing_file << "% Container string\n"; + tracing_file << "%EndEventDef\n"; } - fprintf(tracing_file, "%% Key string\n"); - fprintf(tracing_file, "%%EndEventDef\n"); -} -static void TRACE_header_PajeNewEvent() -{ - fprintf(tracing_file, "%%EventDef PajeNewEvent %u\n", simgrid::instr::PAJE_NewEvent); - fprintf(tracing_file, "%% Time date\n"); - fprintf(tracing_file, "%% Type string\n"); - fprintf(tracing_file, "%% Container string\n"); - fprintf(tracing_file, "%% Value string\n"); - fprintf(tracing_file, "%%EndEventDef\n"); -} - -void TRACE_header(bool basic, int size) -{ - XBT_DEBUG ("Define paje header"); - TRACE_header_PajeDefineContainerType(basic); - TRACE_header_PajeDefineVariableType(basic); - TRACE_header_PajeDefineStateType(basic); - TRACE_header_PajeDefineEventType(basic); - TRACE_header_PajeDefineLinkType(basic); - TRACE_header_PajeDefineEntityValue(basic); - TRACE_header_PajeCreateContainer(); - TRACE_header_PajeDestroyContainer(); - TRACE_header_PajeSetVariable(); - TRACE_header_PajeAddVariable(); - TRACE_header_PajeSubVariable(); - TRACE_header_PajeSetState(); - TRACE_header_PajePushState(size); - TRACE_header_PajePopState(); - TRACE_header_PajeResetState(basic); - TRACE_header_PajeStartLink (basic, size); - TRACE_header_PajeEndLink(basic); - TRACE_header_PajeNewEvent(); -} + // Link + tracing_file << "%EventDef PajeStartLink " << PajeEventType::StartLink << '\n'; + tracing_file << "% Time date\n"; + tracing_file << "% Type string\n"; + tracing_file << "% Container string\n"; + tracing_file << "% Value string\n"; + tracing_file << "% " << (basic ? "Source" : "Start") << "Container string\n"; + tracing_file << "% Key string\n"; + if (display_sizes) + tracing_file << "% Size int\n"; + tracing_file << "%EndEventDef\n"; + + tracing_file << "%EventDef PajeEndLink " << PajeEventType::EndLink << '\n'; + tracing_file << "% Time date\n"; + tracing_file << "% Type string\n"; + tracing_file << "% Container string\n"; + tracing_file << "% Value string\n"; + tracing_file << "% " << (basic ? "Dest" : "End") << "Container string\n"; + tracing_file << "% Key string\n"; + tracing_file << "%EndEventDef\n"; + + // Event + tracing_file << "%EventDef PajeNewEvent " << PajeEventType::NewEvent << '\n'; + tracing_file << "% Time date\n"; + tracing_file << "% Type string\n"; + tracing_file << "% Container string\n"; + tracing_file << "% Value string\n"; + tracing_file << "%EndEventDef\n"; +} +} // namespace simgrid::instr::paje