Rename quiesce to drain to avoid confusion with the pseudo instruction.

src/cpu/simple/timing.cc:
src/cpu/simple/timing.hh:
src/python/m5/__init__.py:
src/python/m5/config.py:
src/sim/main.cc:
src/sim/sim_events.cc:
src/sim/sim_events.hh:
src/sim/sim_object.cc:
src/sim/sim_object.hh:
    Rename quiesce to drain.

--HG--
extra : convert_revision : fc3244a3934812e1edb8050f1f51f30382baf774
This commit is contained in:
Kevin Lim
2006-07-05 17:59:33 -04:00
parent bd26dbdb13
commit d8fd09cc15
9 changed files with 61 additions and 63 deletions

View File

@@ -213,14 +213,14 @@ atexit.register(cc_main.doExitCleanup)
# matter since most scripts will probably 'from m5.objects import *'.
import objects
def doQuiesce(root):
quiesce = cc_main.createCountedQuiesce()
unready_objects = root.startQuiesce(quiesce, True)
# If we've got some objects that can't quiesce immediately, then simulate
def doDrain(root):
drain_event = cc_main.createCountedDrain()
unready_objects = root.startDrain(drain_event, True)
# If we've got some objects that can't drain immediately, then simulate
if unready_objects > 0:
quiesce.setCount(unready_objects)
drain_event.setCount(unready_objects)
simulate()
cc_main.cleanupCountedQuiesce(quiesce)
cc_main.cleanupCountedDrain(drain_event)
def resume(root):
root.resume()
@@ -228,7 +228,7 @@ def resume(root):
def checkpoint(root):
if not isinstance(root, objects.Root):
raise TypeError, "Object is not a root object. Checkpoint must be called on a root object."
doQuiesce(root)
doDrain(root)
print "Writing checkpoint"
cc_main.serializeAll()
resume(root)
@@ -241,7 +241,7 @@ def changeToAtomic(system):
if not isinstance(system, objects.Root) and not isinstance(system, System):
raise TypeError, "Object is not a root or system object. Checkpoint must be "
"called on a root object."
doQuiesce(system)
doDrain(system)
print "Changing memory mode to atomic"
system.changeTiming(cc_main.SimObject.Atomic)
resume(system)
@@ -250,7 +250,7 @@ def changeToTiming(system):
if not isinstance(system, objects.Root) and not isinstance(system, System):
raise TypeError, "Object is not a root or system object. Checkpoint must be "
"called on a root object."
doQuiesce(system)
doDrain(system)
print "Changing memory mode to timing"
system.changeTiming(cc_main.SimObject.Timing)
resume(system)
@@ -271,16 +271,16 @@ def switchCpus(cpuList):
if not isinstance(cpu, objects.BaseCPU):
raise TypeError, "%s is not of type BaseCPU", cpu
# Quiesce all of the individual CPUs
quiesce = cc_main.createCountedQuiesce()
# Drain all of the individual CPUs
drain_event = cc_main.createCountedDrain()
unready_cpus = 0
for old_cpu in old_cpus:
unready_cpus += old_cpu.startQuiesce(quiesce, False)
# If we've got some objects that can't quiesce immediately, then simulate
unready_cpus += old_cpu.startDrain(drain_event, False)
# If we've got some objects that can't drain immediately, then simulate
if unready_cpus > 0:
quiesce.setCount(unready_cpus)
drain_event.setCount(unready_cpus)
simulate()
cc_main.cleanupCountedQuiesce(quiesce)
cc_main.cleanupCountedDrain(drain_event)
# Now all of the CPUs are ready to be switched out
for old_cpu in old_cpus:
old_cpu._ccObject.switchOut()

View File

@@ -543,15 +543,15 @@ class SimObject(object):
for child in self._children.itervalues():
child.connectPorts()
def startQuiesce(self, quiesce_event, recursive):
def startDrain(self, drain_event, recursive):
count = 0
# ParamContexts don't serialize
if isinstance(self, SimObject) and not isinstance(self, ParamContext):
if self._ccObject.quiesce(quiesce_event):
if self._ccObject.drain(drain_event):
count = 1
if recursive:
for child in self._children.itervalues():
count += child.startQuiesce(quiesce_event, True)
count += child.startDrain(drain_event, True)
return count
def resume(self):