From 3fa5816dcf639b3cf2e134f94d80e13813d3dfd8 Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Tue, 30 Jan 2007 18:21:42 -0500 Subject: fix some checkpointing annoyances -m works as you think it should Ctrl-C actually ends the simulation now --HG-- extra : convert_revision : f2269dc90d165c716459ec61f5f7b1ea3c1d4ae2 --- configs/common/Simulation.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'configs/common/Simulation.py') diff --git a/configs/common/Simulation.py b/configs/common/Simulation.py index e037d0343..8374d2fb5 100644 --- a/configs/common/Simulation.py +++ b/configs/common/Simulation.py @@ -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) -- cgit v1.2.3