From 4596a33e10ebbab83d757c5c6a9efe9c299a7499 Mon Sep 17 00:00:00 2001 From: Andrew Bardsley Date: Thu, 10 Sep 2015 16:10:49 +0100 Subject: [PATCH] sim: Update C++ config example to match SystemC example Update the use of the drain manager, and checkpointing to match changes to gem5 since the example was written. --- util/cxx_config/main.cc | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/util/cxx_config/main.cc b/util/cxx_config/main.cc index 2a9588f2e..0356aeaac 100644 --- a/util/cxx_config/main.cc +++ b/util/cxx_config/main.cc @@ -228,15 +228,13 @@ main(int argc, char **argv) if (checkpoint_save) { exit_event = simulate(pre_run_time); - DrainManager drain_manager; unsigned int drain_count = 1; do { - drain_count = config_manager->drain(&drain_manager); + drain_count = config_manager->drain(); std::cerr << "Draining " << drain_count << '\n'; if (drain_count > 0) { - drain_manager.setCount(drain_count); exit_event = simulate(); } } while (drain_count > 0); @@ -259,11 +257,12 @@ main(int argc, char **argv) if (checkpoint_restore) { std::cerr << "Restoring checkpoint\n"; - Checkpoint *checkpoint = new Checkpoint(checkpoint_dir, + CheckpointIn *checkpoint = new CheckpointIn(checkpoint_dir, config_manager->getSimObjectResolver()); - Serializable::unserializeGlobals(checkpoint); - config_manager->loadState(checkpoint); + DrainManager::instance().preCheckpointRestore(); + Serializable::unserializeGlobals(*checkpoint); + config_manager->loadState(*checkpoint); config_manager->startup(); config_manager->drainResume(); @@ -281,15 +280,13 @@ main(int argc, char **argv) BaseCPU &old_cpu = config_manager->getObject(from_cpu); BaseCPU &new_cpu = config_manager->getObject(to_cpu); - DrainManager drain_manager; unsigned int drain_count = 1; do { - drain_count = config_manager->drain(&drain_manager); + drain_count = config_manager->drain(); std::cerr << "Draining " << drain_count << '\n'; if (drain_count > 0) { - drain_manager.setCount(drain_count); exit_event = simulate(); } } while (drain_count > 0);