rename AlphaConsole to AlphaBackdoor
[gem5.git] / src / dev / etherdump.cc
index 7dcf1ca97a856c0e241d982a3624fef9ed9723f0..07e52f36d5846b1c4922252d491f6ed08d002637 100644 (file)
 #include "base/misc.hh"
 #include "base/output.hh"
 #include "dev/etherdump.hh"
-#include "params/EtherDump.hh"
 #include "sim/core.hh"
 
 using std::string;
 
-EtherDump::EtherDump(const string &name, const string &file, int max)
-    : SimObject(name), stream(file.c_str()), maxlen(max)
+EtherDump::EtherDump(const Params *p)
+    : SimObject(p), stream(simout.create(p->file, true)),
+      maxlen(p->maxlen)
 {
 }
 
@@ -86,7 +86,7 @@ EtherDump::init()
     hdr.sigfigs = 0;
     hdr.linktype = DLT_EN10MB;
 
-    stream.write(reinterpret_cast<char *>(&hdr), sizeof(hdr));
+    stream->write(reinterpret_cast<char *>(&hdr), sizeof(hdr));
 
     /*
      * output an empty packet with the current time so that we know
@@ -98,9 +98,9 @@ EtherDump::init()
     pkthdr.microseconds = 0;
     pkthdr.caplen = 0;
     pkthdr.len = 0;
-    stream.write(reinterpret_cast<char *>(&pkthdr), sizeof(pkthdr));
+    stream->write(reinterpret_cast<char *>(&pkthdr), sizeof(pkthdr));
 
-    stream.flush();
+    stream->flush();
 }
 
 void
@@ -111,13 +111,13 @@ EtherDump::dumpPacket(EthPacketPtr &packet)
     pkthdr.microseconds = (curTick / Clock::Int::us) % ULL(1000000);
     pkthdr.caplen = std::min(packet->length, maxlen);
     pkthdr.len = packet->length;
-    stream.write(reinterpret_cast<char *>(&pkthdr), sizeof(pkthdr));
-    stream.write(reinterpret_cast<char *>(packet->data), pkthdr.caplen);
-    stream.flush();
+    stream->write(reinterpret_cast<char *>(&pkthdr), sizeof(pkthdr));
+    stream->write(reinterpret_cast<char *>(packet->data), pkthdr.caplen);
+    stream->flush();
 }
 
 EtherDump *
 EtherDumpParams::create()
 {
-    return new EtherDump(name, simout.resolve(file), maxlen);
+    return new EtherDump(this);
 }