timegm() is a gnuism... replace with the code from the timegm() man page
authorAli Saidi <saidi@eecs.umich.edu>
Tue, 30 Jan 2007 00:04:06 +0000 (19:04 -0500)
committerAli Saidi <saidi@eecs.umich.edu>
Tue, 30 Jan 2007 00:04:06 +0000 (19:04 -0500)
--HG--
extra : convert_revision : f2b80a0b7768edc370e3f07c45cb3bb9a46450a9

src/dev/sparc/dtod.cc
src/dev/sparc/dtod.hh

index 50e158c120830892b107de3cf854983e557dd849..42275c60a58c0b1abb7f867d92a74a6cc3d8f30e 100644 (file)
@@ -51,11 +51,21 @@ using namespace TheISA;
 DumbTOD::DumbTOD(Params *p)
     : BasicPioDevice(p)
 {
+    struct tm tm;
+    char *tz;
+
     pioSize = 0x08;
 
-    struct tm tm;
     parseTime(p->init_time, &tm);
-    todTime = timegm(&tm);
+    tz = getenv("TZ");
+    setenv("TZ", "", 1);
+    tzset();
+    todTime = mktime(&tm);
+    if (tz)
+        setenv("TZ", tz, 1);
+    else
+        unsetenv("TZ");
+    tzset();
 
     DPRINTFN("Real-time clock set to %s\n", asctime(&tm));
     DPRINTFN("Real-time clock set to %d\n", todTime);
@@ -82,6 +92,19 @@ DumbTOD::write(PacketPtr pkt)
     panic("Dumb tod device doesn't support writes\n");
 }
 
+void
+DumbTOD::serialize(std::ostream &os)
+{
+    SERIALIZE_SCALAR(todTime);
+}
+
+void
+DumbTOD::unserialize(Checkpoint *cp, const std::string &section)
+{
+    UNSERIALIZE_SCALAR(todTime);
+}
+
+
 BEGIN_DECLARE_SIM_OBJECT_PARAMS(DumbTOD)
 
     Param<Addr> pio_addr;
index 26d4ecc087a304f5ceb82d8781ec491dae259a3b..ddf9fcc966044e49e48392cc62be5ac117cf641f 100644 (file)
@@ -64,6 +64,21 @@ class DumbTOD : public BasicPioDevice
 
     virtual Tick read(PacketPtr pkt);
     virtual Tick write(PacketPtr pkt);
+
+    /**
+     * Serialize this object to the given output stream.
+     * @param os The stream to serialize to.
+     */
+    virtual void serialize(std::ostream &os);
+
+    /**
+     * Reconstruct the state of this object from a checkpoint.
+     * @param cp The checkpoint use.
+     * @param section The section name of this object
+     */
+    virtual void unserialize(Checkpoint *cp, const std::string &section);
+
+
 };
 
 #endif // __DEV_BADDEV_HH__