summaryrefslogtreecommitdiff
path: root/src/mem/probes/mem_trace.cc
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2017-09-21 17:48:33 -0700
committerGabe Black <gabeblack@google.com>2017-09-25 21:14:21 +0000
commit2e3bf009b111a7e3076db61ed5cee4acaa28dc83 (patch)
treed4804e5ccbbbd644bae5a7dfbb3dc692b2d231cb /src/mem/probes/mem_trace.cc
parent10cd85c67c0d55ae4aa82ab5b4b1ddc0b6379839 (diff)
downloadgem5-2e3bf009b111a7e3076db61ed5cee4acaa28dc83.tar.xz
mem: Fill the new packet ID fields with master IDs when tracing packets.
This will let somebody consuming the memory packet trace make sense out of the master IDs passed along with individual accesses. Change-Id: I621d915f218728066ce95e6fc81f36d14ae7e597 Reviewed-on: https://gem5-review.googlesource.com/4800 Reviewed-by: Rahul Thakur <rjthakur@google.com> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
Diffstat (limited to 'src/mem/probes/mem_trace.cc')
-rw-r--r--src/mem/probes/mem_trace.cc25
1 files changed, 19 insertions, 6 deletions
diff --git a/src/mem/probes/mem_trace.cc b/src/mem/probes/mem_trace.cc
index 465c10004..6e55c48a1 100644
--- a/src/mem/probes/mem_trace.cc
+++ b/src/mem/probes/mem_trace.cc
@@ -44,10 +44,12 @@
#include "base/output.hh"
#include "params/MemTraceProbe.hh"
#include "proto/packet.pb.h"
+#include "sim/system.hh"
MemTraceProbe::MemTraceProbe(MemTraceProbeParams *p)
: BaseMemProbe(p),
traceStream(nullptr),
+ system(p->system),
withPC(p->with_pc)
{
std::string filename;
@@ -72,18 +74,29 @@ MemTraceProbe::MemTraceProbe(MemTraceProbeParams *p)
traceStream = new ProtoOutputStream(filename);
+ // Register a callback to compensate for the destructor not
+ // being called. The callback forces the stream to flush and
+ // closes the output file.
+ registerExitCallback(
+ new MakeCallback<MemTraceProbe, &MemTraceProbe::closeStreams>(this));
+}
+
+void
+MemTraceProbe::startup()
+{
// Create a protobuf message for the header and write it to
// the stream
ProtoMessage::PacketHeader header_msg;
header_msg.set_obj_id(name());
header_msg.set_tick_freq(SimClock::Frequency);
- traceStream->write(header_msg);
- // Register a callback to compensate for the destructor not
- // being called. The callback forces the stream to flush and
- // closes the output file.
- registerExitCallback(
- new MakeCallback<MemTraceProbe, &MemTraceProbe::closeStreams>(this));
+ for (int i = 0; i < system->maxMasters(); i++) {
+ auto id_string = header_msg.add_id_strings();
+ id_string->set_key(i);
+ id_string->set_value(system->getMasterName(i));
+ }
+
+ traceStream->write(header_msg);
}
void