fix some checkpointing annoyances
authorAli Saidi <saidi@eecs.umich.edu>
Tue, 30 Jan 2007 23:21:42 +0000 (18:21 -0500)
committerAli Saidi <saidi@eecs.umich.edu>
Tue, 30 Jan 2007 23:21:42 +0000 (18:21 -0500)
-m works as you think it should
Ctrl-C actually ends the simulation now

--HG--
extra : convert_revision : f2269dc90d165c716459ec61f5f7b1ea3c1d4ae2

configs/common/Simulation.py

index e037d03436cd091dd6e29947fc521a993d51a4e4..8374d2fb59dc5f7bca7de6d393f83af1021083ad 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2006 The Regents of The University of Michigan
+# Copyright (c) 2006-2007 The Regents of The University of Michigan
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -144,6 +144,10 @@ def run(options, root, testsys, cpu_class):
         if cpt_num > len(cpts):
             m5.panic('Checkpoint %d not found' % cpt_num)
 
+        ## Adjust max tick based on our starting tick
+        maxtick = maxtick - int(cpts[cpt_num - 1])
+
+        ## Restore the checkpoint
         m5.restoreCheckpoint(root,
                              joinpath(cptdir, "cpt.%s" % cpts[cpt_num - 1]))
 
@@ -185,7 +189,8 @@ def run(options, root, testsys, cpu_class):
 
         sim_ticks = when
         exit_cause = "maximum %d checkpoints dropped" % max_checkpoints
-        while num_checkpoints < max_checkpoints:
+        while num_checkpoints < max_checkpoints and \
+                exit_event.getCause() != "user interrupt received":
             if (sim_ticks + period) > maxtick:
                 exit_event = m5.simulate(maxtick - sim_ticks)
                 exit_cause = exit_event.getCause()
@@ -199,6 +204,10 @@ def run(options, root, testsys, cpu_class):
                     m5.checkpoint(root, joinpath(cptdir, "cpt.%d"))
                     num_checkpoints += 1
 
+        if exit_event.getCause() == "user interrupt received":
+            exit_cause = exit_event.getCause();
+
+
     else: #no checkpoints being taken via this script
         exit_event = m5.simulate(maxtick)