More progress on checkpointing... we can now write out a checkpoint and read it back in,
authorSteve Reinhardt <stever@eecs.umich.edu>
Wed, 29 Oct 2003 08:41:24 +0000 (00:41 -0800)
committerSteve Reinhardt <stever@eecs.umich.edu>
Wed, 29 Oct 2003 08:41:24 +0000 (00:41 -0800)
though most objects don't actually serialize any data.

arch/alpha/alpha_memory.cc:
arch/alpha/alpha_memory.hh:
arch/alpha/isa_traits.hh:
cpu/exec_context.cc:
cpu/exec_context.hh:
cpu/simple_cpu/simple_cpu.hh:
dev/alpha_access.h:
dev/alpha_console.cc:
dev/alpha_console.hh:
dev/console.cc:
dev/console.hh:
    Change unserialize param from IniFile& to const IniFile*.
cpu/simple_cpu/simple_cpu.cc:
    Change unserialize param from IniFile& to const IniFile*.
    Make unserialize call ExecContext::unserialize.
sim/eventq.cc:
    Rename MainEventQueue (no spaces) for easier parsing in checkpoints.
    Disable event serialization for now, so we can focus on the easy stuff.
sim/serialize.cc:
    Change paramIn and arrayParamIn param from IniFile& to const IniFile*.
sim/serialize.hh:
    Change unserialize, paramIn, and arrayParamIn params from IniFile& to const IniFile*.

--HG--
extra : convert_revision : 6e8853ed375eddec0e140c95a01dd51bd225f7b9

15 files changed:
arch/alpha/alpha_memory.cc
arch/alpha/alpha_memory.hh
arch/alpha/isa_traits.hh
cpu/exec_context.cc
cpu/exec_context.hh
cpu/simple_cpu/simple_cpu.cc
cpu/simple_cpu/simple_cpu.hh
dev/alpha_access.h
dev/alpha_console.cc
dev/alpha_console.hh
dev/console.cc
dev/console.hh
sim/eventq.cc
sim/serialize.cc
sim/serialize.hh

index 82dd2afa5a4b5008670eb24c15c8726424f83e4f..2aad41cea2054d57af7e7098e55be73a03176dbd 100644 (file)
@@ -241,7 +241,7 @@ AlphaTlb::serialize(ostream &os)
 }
 
 void
-AlphaTlb::unserialize(IniFile &db, const string &section)
+AlphaTlb::unserialize(const IniFile *db, const string &section)
 {
     UNSERIALIZE_MEMBER(size);
     UNSERIALIZE_MEMBER(nlu);
index c94ee26c3e1dba133ad56c589d7f0bb74aa153d0..e6637893cbc69df9fe77c205d6169af52f76868c 100644 (file)
@@ -74,7 +74,7 @@ class AlphaTlb : public SimObject
 
     // Checkpointing
     virtual void serialize(std::ostream &os);
-    virtual void unserialize(IniFile &db, const std::string &section);
+    virtual void unserialize(const IniFile *db, const std::string &section);
 
 };
 
index 5e2dac9f32a6006657f71fe9f339a48c3b936339..e27841c3c74a7873334a1c3704c886baccc4a973 100644 (file)
@@ -225,7 +225,7 @@ class AlphaISA
     static void serializeSpecialRegs(const Serializeable::Proxy &proxy,
                                      const RegFile &regs);
 
-    static void unserializeSpecialRegs(IniFile &db,
+    static void unserializeSpecialRegs(const IniFile *db,
                                        const std::string &category,
                                        ConfigNode *node,
                                        RegFile &regs);
index 8cfd0a0ea45a6369e875468d92a06afc4026b754..ed636064982f458001a6a380574291b7ba6996fd 100644 (file)
@@ -106,7 +106,7 @@ ExecContext::serialize(ostream &os)
 
 
 void
-ExecContext::unserialize(IniFile &db, const std::string &section)
+ExecContext::unserialize(const IniFile *db, const std::string &section)
 {
     UNSERIALIZE_ARRAY(regs.intRegFile, NumIntRegs);
     UNSERIALIZE_ARRAY(regs.floatRegFile.q, NumFloatRegs);
index 285154ed06379cd0fda581069c7d5e87add1fccd..6938b369f1363ba48b0a36b7f13e19b51fcd33f2 100644 (file)
@@ -142,7 +142,7 @@ class ExecContext
     void regStats(const std::string &name);
 
     void serialize(std::ostream &os);
-    void unserialize(IniFile &db, const std::string &section);
+    void unserialize(const IniFile *db, const std::string &section);
 
 #ifdef FULL_SYSTEM
     bool validInstAddr(Addr addr) { return true; }
index 83e9e1fa2b443402ee929944eedaa81bba5497eb..27576d55867e4ad1f36fac624c7cfef44b77e5e5 100644 (file)
@@ -246,22 +246,9 @@ SimpleCPU::serialize(ostream &os)
 }
 
 void
-SimpleCPU::unserialize(IniFile &db, const string &category)
+SimpleCPU::unserialize(const IniFile *db, const string &category)
 {
-    string data;
-
-    for (int i = 0; i < NumIntRegs; i++) {
-        stringstream buf;
-        ccprintf(buf, "R%02d", i);
-        db.findDefault(category, buf.str(), data);
-        to_number(data,xc->regs.intRegFile[i]);
-    }
-    for (int i = 0; i < NumFloatRegs; i++) {
-        stringstream buf;
-        ccprintf(buf, "F%02d", i);
-        db.findDefault(category, buf.str(), data);
-        to_number(data.c_str(), xc->regs.floatRegFile.q[i]);
-    }
+    xc->unserialize(db, category);
 
     // Read in Special registers
 
index fa7386106ef357bae291cd7b102a2b9c9cdd3100..aee8159ce204df74cf06a797e7a253d052a4a5ac 100644 (file)
@@ -260,7 +260,7 @@ class SimpleCPU : public BaseCPU
     void processCacheCompletion();
 
     virtual void serialize(std::ostream &os);
-    virtual void unserialize(IniFile &db, const std::string &section);
+    virtual void unserialize(const IniFile *db, const std::string &section);
 
     template <class T>
     Fault read(Addr addr, T& data, unsigned flags);
index 4bba39c4fff9483df6b82b108aa4ce7294646c64..c145fa2a3ea2fc3fcb42b09cbe645ba169557154 100644 (file)
@@ -82,7 +82,7 @@ struct AlphaAccess
 
 #ifndef CONSOLE
     void serialize(std::ostream &os);
-    void unserialize(IniFile &db, const std::string &section);
+    void unserialize(const IniFile *db, const std::string &section);
 #endif
 };
 
index 00dab4bad766a8fbb2c823523ec9d630eb6d0dc9..9bf74bce41d7605ea2b9b3cc76a79910b5ca6083 100644 (file)
@@ -188,7 +188,7 @@ AlphaAccess::serialize(ostream &os)
 }
 
 void
-AlphaAccess::unserialize(IniFile &db, const std::string &section)
+AlphaAccess::unserialize(const IniFile *db, const std::string &section)
 {
     UNSERIALIZE_MEMBER(last_offset);
     UNSERIALIZE_MEMBER(version);
@@ -216,7 +216,7 @@ AlphaConsole::serialize(ostream &os)
 }
 
 void
-AlphaConsole::unserialize(IniFile &db, const std::string &section)
+AlphaConsole::unserialize(const IniFile *db, const std::string &section)
 {
     alphaAccess->unserialize(db, section);
 }
index caa571cecbca190b4c98222718b956083528d440..e4aeb2417515e98c9cf66cc6e6c4828b2e438b7c 100644 (file)
@@ -101,7 +101,7 @@ class AlphaConsole : public MmapDevice
      * standard serialization routines for checkpointing
      */
     virtual void serialize(std::ostream &os);
-    virtual void unserialize(IniFile &db, const std::string &section);
+    virtual void unserialize(const IniFile *db, const std::string &section);
 };
 
 #endif // __ALPHA_CONSOLE_HH__
index a84f4a66614408ce59b7cd043bc99b90dfda560f..749add532086304c2a47bea2dfe71fe6f352f2ef 100644 (file)
@@ -316,13 +316,11 @@ SimConsole::setInt(int bits)
 void
 SimConsole::serialize(ostream &os)
 {
-    panic("Unimplemented");
 }
 
 void
-SimConsole::unserialize(IniFile &db, const std::string &section)
+SimConsole::unserialize(const IniFile *db, const std::string &section)
 {
-    panic("Unimplemented");
 }
 
 
index 5d9ea53029583385da6a901fd0c5dad76fd85ffb..6746f90b6643e04e9f2861299958a20ab17e9afc 100644 (file)
@@ -129,7 +129,7 @@ class SimConsole : public SimObject
     void setInt(int bits);
 
     virtual void serialize(std::ostream &os);
-    virtual void unserialize(IniFile &db, const std::string &section);
+    virtual void unserialize(const IniFile *db, const std::string &section);
 };
 
 class ConsoleListener : public SimObject
index da9e85eeb6924d77d038e2ea1e7c163c9305ac2d..7285f63e83b4869b55b56e68cdf890430b3b4170 100644 (file)
@@ -50,7 +50,7 @@ const string Event::defaultName("event");
 // Events on this queue are processed at the *beginning* of each
 // cycle, before the pipeline simulation is performed.
 //
-EventQueue mainEventQueue("Main Event Queue");
+EventQueue mainEventQueue("MainEventQueue");
 
 void
 EventQueue::insert(Event *event)
@@ -121,6 +121,7 @@ EventQueue::serviceOne()
 void
 EventQueue::nameChildren()
 {
+#if 0
     int j = 0;
 
     Event *event = head;
@@ -131,11 +132,13 @@ EventQueue::nameChildren()
 
         event = event->next;
     }
+#endif
 }
 
 void
 EventQueue::serialize(ostream &os)
 {
+#if 0
     string objects = "";
 
     Event *event = head;
@@ -148,6 +151,7 @@ EventQueue::serialize(ostream &os)
     }
     nameOut(os, "Serialized");
     SERIALIZE_MEMBER(objects);
+#endif
 }
 
 void
index b2a50154fec21db28a8ac64485ad80a395d604e1..00321b93238e148b0aa371fbef446f8d588c90cd 100644 (file)
@@ -88,11 +88,11 @@ paramOut(ostream &os, const std::string &name, const T& param)
 
 template <class T>
 void
-paramIn(IniFile &db, const std::string &section,
+paramIn(const IniFile *db, const std::string &section,
         const std::string &name, T& param)
 {
     std::string str;
-    if (!db.find(section, name, str) || !parseParam(str, param)) {
+    if (!db->find(section, name, str) || !parseParam(str, param)) {
         fatal("Can't unserialize '%s:%s'\n", section, name);
     }
 }
@@ -116,11 +116,11 @@ arrayParamOut(ostream &os, const std::string &name,
 
 template <class T>
 void
-arrayParamIn(IniFile &db, const std::string &section,
+arrayParamIn(const IniFile *db, const std::string &section,
              const std::string &name, T *param, int size)
 {
     std::string str;
-    if (!db.find(section, name, str)) {
+    if (!db->find(section, name, str)) {
         fatal("Can't unserialize '%s:%s'\n", section, name);
     }
 
@@ -159,17 +159,17 @@ arrayParamIn(IniFile &db, const std::string &section,
 }
 
 
-#define INSTANTIATE_PARAM_TEMPLATES(type)                      \
-template void                                          \
+#define INSTANTIATE_PARAM_TEMPLATES(type)                              \
+template void                                                          \
 paramOut(ostream &os, const std::string &name, const type &param);     \
-template void                                          \
-paramIn(IniFile &db, const std::string &section,               \
-        const std::string &name, type & param);                        \
-template void                                          \
-arrayParamOut(ostream &os, const std::string &name,            \
-              const type *param, int size);                    \
-template void                                          \
-arrayParamIn(IniFile &db, const std::string &section,          \
+template void                                                          \
+paramIn(const IniFile *db, const std::string &section,                 \
+        const std::string &name, type & param);                                \
+template void                                                          \
+arrayParamOut(ostream &os, const std::string &name,                    \
+              const type *param, int size);                            \
+template void                                                          \
+arrayParamIn(const IniFile *db, const std::string &section,            \
              const std::string &name, type *param, int size);
 
 
index 5ebbfaba5e026a0bb60cf3eeeb45779e91769a19..668e654b7b763eea4987d7bbaae296b1b9cb9a60 100644 (file)
@@ -47,7 +47,7 @@ template <class T>
 void paramOut(std::ostream &os, const std::string &name, const T& param);
 
 template <class T>
-void paramIn(IniFile &db, const std::string &section,
+void paramIn(const IniFile *db, const std::string &section,
              const std::string &name, T& param);
 
 template <class T>
@@ -55,7 +55,7 @@ void arrayParamOut(std::ostream &os, const std::string &name,
                    const T *param, int size);
 
 template <class T>
-void arrayParamIn(IniFile &db, const std::string &section,
+void arrayParamIn(const IniFile *db, const std::string &section,
                   const std::string &name, T *param, int size);
 
 //
@@ -103,7 +103,7 @@ class Serializeable
 
     virtual void nameChildren() {}
     virtual void serialize(std::ostream& os) {}
-    virtual void unserialize(IniFile &db, const std::string &section) {}
+    virtual void unserialize(const IniFile *db, const std::string &section) {}
 };
 
 class Serializer