Fix dumping to work on the opteron. struct timeval can
authorNathan Binkert <binkertn@umich.edu>
Sun, 29 Feb 2004 22:05:23 +0000 (17:05 -0500)
committerNathan Binkert <binkertn@umich.edu>
Sun, 29 Feb 2004 22:05:23 +0000 (17:05 -0500)
vary in size, so we're explicit about the fields.

--HG--
extra : convert_revision : e5264849dafb878676b2bfd3a6e6f95f6f94ea48

dev/etherdump.cc

index 23b3d778e24e0163f4f370eccb436e69143162c2..b6d6bbe3022cb85d6464ed6173033755ce63fb5c 100644 (file)
@@ -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));