1 /* Copyright (c) 2010-2021. The SimGrid Team.
2 * All rights reserved. */
4 /* This program is free software; you can redistribute it and/or modify it
5 * under the terms of the license (GNU LGPL) which comes with this package. */
7 #include "simgrid/Exception.hpp"
8 #include "src/instr/instr_private.hpp"
9 #include "src/smpi/include/private.hpp"
10 #include "xbt/virtu.h" /* xbt::cmdline */
12 extern std::ofstream tracing_file;
17 void dump_generator_version()
19 tracing_file << "#This file was generated using SimGrid-" << SIMGRID_VERSION_MAJOR << "." << SIMGRID_VERSION_MINOR
20 << "." << SIMGRID_VERSION_PATCH << std::endl;
22 for (auto const& str : simgrid::xbt::cmdline) {
23 tracing_file << str << " ";
25 tracing_file << "]" << std::endl;
28 void dump_comment_file(const std::string& filename)
32 std::ifstream fs(filename.c_str(), std::ifstream::in);
35 throw TracingError(XBT_THROW_POINT,
36 xbt::string_printf("Comment file %s could not be opened for reading.", filename.c_str()));
38 while (not fs.eof()) {
40 std::getline(fs, line);
41 tracing_file << "# " << line;
46 void dump_header(bool basic, bool display_sizes)
49 tracing_file << "%EventDef PajeDefineContainerType " << PajeEventType::DefineContainerType << std::endl;
50 tracing_file << "% Alias string" << std::endl;
52 tracing_file << "% ContainerType string" << std::endl;
54 tracing_file << "% Type string" << std::endl;
56 tracing_file << "% Name string" << std::endl;
57 tracing_file << "%EndEventDef" << std::endl;
59 tracing_file << "%EventDef PajeDefineVariableType " << PajeEventType::DefineVariableType << std::endl;
60 tracing_file << "% Alias string" << std::endl;
61 tracing_file << "% " << (basic ? "Container" : "") << "Type string" << std::endl;
62 tracing_file << "% Name string" << std::endl;
63 tracing_file << "% Color color" << std::endl;
64 tracing_file << "%EndEventDef" << std::endl;
66 tracing_file << "%EventDef PajeDefineStateType " << PajeEventType::DefineStateType << std::endl;
67 tracing_file << "% Alias string" << std::endl;
68 tracing_file << "% " << (basic ? "Container" : "") << "Type string" << std::endl;
69 tracing_file << "% Name string" << std::endl;
70 tracing_file << "%EndEventDef" << std::endl;
72 tracing_file << "%EventDef PajeDefineEventType " << PajeEventType::DefineEventType << std::endl;
73 tracing_file << "% Alias string" << std::endl;
74 tracing_file << "% " << (basic ? "Container" : "") << "Type string" << std::endl;
75 tracing_file << "% Name string" << std::endl;
76 tracing_file << "%EndEventDef" << std::endl;
78 tracing_file << "%EventDef PajeDefineLinkType " << PajeEventType::DefineLinkType << std::endl;
79 tracing_file << "% Alias string" << std::endl;
80 tracing_file << "% " << (basic ? "Container" : "") << "Type string" << std::endl;
81 tracing_file << "% " << (basic ? "Source" : "Start") << "ContainerType string" << std::endl;
82 tracing_file << "% " << (basic ? "Dest" : "End") << "ContainerType string" << std::endl;
83 tracing_file << "% Name string" << std::endl;
84 tracing_file << "%EndEventDef" << std::endl;
87 tracing_file << "%EventDef PajeDefineEntityValue " << PajeEventType::DefineEntityValue << std::endl;
88 tracing_file << "% Alias string" << std::endl;
89 tracing_file << "% " << (basic ? "Entity" : "") << "Type string" << std::endl;
90 tracing_file << "% Name string" << std::endl;
91 tracing_file << "% Color color" << std::endl;
92 tracing_file << "%EndEventDef" << std::endl;
95 tracing_file << "%EventDef PajeCreateContainer " << PajeEventType::CreateContainer << std::endl;
96 tracing_file << "% Time date" << std::endl;
97 tracing_file << "% Alias string" << std::endl;
98 tracing_file << "% Type string" << std::endl;
99 tracing_file << "% Container string" << std::endl;
100 tracing_file << "% Name string" << std::endl;
101 tracing_file << "%EndEventDef" << std::endl;
103 tracing_file << "%EventDef PajeDestroyContainer " << PajeEventType::DestroyContainer << std::endl;
104 tracing_file << "% Time date" << std::endl;
105 tracing_file << "% Type string" << std::endl;
106 tracing_file << "% Name string" << std::endl;
107 tracing_file << "%EndEventDef" << std::endl;
110 tracing_file << "%EventDef PajeSetVariable " << PajeEventType::SetVariable << std::endl;
111 tracing_file << "% Time date" << std::endl;
112 tracing_file << "% Type string" << std::endl;
113 tracing_file << "% Container string" << std::endl;
114 tracing_file << "% Value double" << std::endl;
115 tracing_file << "%EndEventDef" << std::endl;
117 tracing_file << "%EventDef PajeAddVariable " << PajeEventType::AddVariable << std::endl;
118 tracing_file << "% Time date" << std::endl;
119 tracing_file << "% Type string" << std::endl;
120 tracing_file << "% Container string" << std::endl;
121 tracing_file << "% Value double" << std::endl;
122 tracing_file << "%EndEventDef" << std::endl;
124 tracing_file << "%EventDef PajeSubVariable " << PajeEventType::SubVariable << std::endl;
125 tracing_file << "% Time date" << std::endl;
126 tracing_file << "% Type string" << std::endl;
127 tracing_file << "% Container string" << std::endl;
128 tracing_file << "% Value double" << std::endl;
129 tracing_file << "%EndEventDef" << std::endl;
132 tracing_file << "%EventDef PajeSetState " << PajeEventType::SetState << std::endl;
133 tracing_file << "% Time date" << std::endl;
134 tracing_file << "% Type string" << std::endl;
135 tracing_file << "% Container string" << std::endl;
136 tracing_file << "% Value string" << std::endl;
137 tracing_file << "%EndEventDef" << std::endl;
139 tracing_file << "%EventDef PajePushState " << PajeEventType::PushState << std::endl;
140 tracing_file << "% Time date" << std::endl;
141 tracing_file << "% Type string" << std::endl;
142 tracing_file << "% Container string" << std::endl;
143 tracing_file << "% Value string" << std::endl;
145 tracing_file << "% Size int" << std::endl;
147 if (smpi_cfg_trace_call_location()) {
148 /* paje currently (May 2016) uses "Filename" and "Linenumber" as reserved words. We cannot use them... */
149 tracing_file << "% Fname string" << std::endl;
150 tracing_file << "% Lnumber int" << std::endl;
153 tracing_file << "%EndEventDef" << std::endl;
155 tracing_file << "%EventDef PajePopState " << PajeEventType::PopState << std::endl;
156 tracing_file << "% Time date" << std::endl;
157 tracing_file << "% Type string" << std::endl;
158 tracing_file << "% Container string" << std::endl;
159 tracing_file << "%EndEventDef" << std::endl;
162 tracing_file << "%EventDef PajeResetState " << PajeEventType::ResetState << std::endl;
163 tracing_file << "% Time date" << std::endl;
164 tracing_file << "% Type string" << std::endl;
165 tracing_file << "% Container string" << std::endl;
166 tracing_file << "%EndEventDef" << std::endl;
170 tracing_file << "%EventDef PajeStartLink " << PajeEventType::StartLink << std::endl;
171 tracing_file << "% Time date" << std::endl;
172 tracing_file << "% Type string" << std::endl;
173 tracing_file << "% Container string" << std::endl;
174 tracing_file << "% Value string" << std::endl;
175 tracing_file << "% " << (basic ? "Source" : "Start") << "Container string" << std::endl;
176 tracing_file << "% Key string" << std::endl;
178 tracing_file << "% Size int" << std::endl;
179 tracing_file << "%EndEventDef" << std::endl;
181 tracing_file << "%EventDef PajeEndLink " << PajeEventType::EndLink << std::endl;
182 tracing_file << "% Time date" << std::endl;
183 tracing_file << "% Type string" << std::endl;
184 tracing_file << "% Container string" << std::endl;
185 tracing_file << "% Value string" << std::endl;
186 tracing_file << "% " << (basic ? "Dest" : "End") << "Container string" << std::endl;
187 tracing_file << "% Key string" << std::endl;
188 tracing_file << "%EndEventDef" << std::endl;
191 tracing_file << "%EventDef PajeNewEvent " << PajeEventType::NewEvent << std::endl;
192 tracing_file << "% Time date" << std::endl;
193 tracing_file << "% Type string" << std::endl;
194 tracing_file << "% Container string" << std::endl;
195 tracing_file << "% Value string" << std::endl;
196 tracing_file << "%EndEventDef" << std::endl;
200 } // namespace simgrid