summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Binkert <binkertn@umich.edu>2004-02-29 17:05:23 -0500
committerNathan Binkert <binkertn@umich.edu>2004-02-29 17:05:23 -0500
commit2272164d6652c554fb3bab7bddfd0d53151e4115 (patch)
treef332c9090baa888459e9c212af136c6144be2899
parentb491bda24145ffc9ce71a1d79b7b90926f910570 (diff)
downloadgem5-2272164d6652c554fb3bab7bddfd0d53151e4115.tar.xz
Fix dumping to work on the opteron. struct timeval can
vary in size, so we're explicit about the fields. --HG-- extra : convert_revision : e5264849dafb878676b2bfd3a6e6f95f6f94ea48
-rw-r--r--dev/etherdump.cc12
1 files changed, 7 insertions, 5 deletions
diff --git a/dev/etherdump.cc b/dev/etherdump.cc
index 23b3d778e..b6d6bbe30 100644
--- a/dev/etherdump.cc
+++ b/dev/etherdump.cc
@@ -34,6 +34,7 @@
#include <string>
+#include "base/misc.hh"
#include "dev/etherdump.hh"
#include "sim/builder.hh"
#include "sim/universe.hh"
@@ -63,7 +64,8 @@ struct pcap_file_header {
};
struct pcap_pkthdr {
- struct timeval ts; // time stamp
+ uint32_t seconds;
+ uint32_t microseconds;
uint32_t caplen; // length of portion present
uint32_t len; // length this packet (off wire)
};
@@ -96,8 +98,8 @@ EtherDump::init()
* to sim_cycles.
*/
pcap_pkthdr pkthdr;
- pkthdr.ts.tv_sec = curtime;
- pkthdr.ts.tv_usec = 0;
+ pkthdr.seconds = curtime;
+ pkthdr.microseconds = 0;
pkthdr.caplen = 0;
pkthdr.len = 0;
stream.write(reinterpret_cast<char *>(&pkthdr), sizeof(pkthdr));
@@ -109,8 +111,8 @@ void
EtherDump::dumpPacket(PacketPtr &packet)
{
pcap_pkthdr pkthdr;
- pkthdr.ts.tv_sec = curtime + (curTick / s_freq);
- pkthdr.ts.tv_usec = (curTick / us_freq) % ULL(1000000);
+ pkthdr.seconds = curtime + (curTick / s_freq);
+ pkthdr.microseconds = (curTick / us_freq) % ULL(1000000);
pkthdr.caplen = packet->length;
pkthdr.len = packet->length;
stream.write(reinterpret_cast<char *>(&pkthdr), sizeof(pkthdr));