diff options
author | Steve Reinhardt <stever@eecs.umich.edu> | 2003-10-29 13:35:07 -0800 |
---|---|---|
committer | Steve Reinhardt <stever@eecs.umich.edu> | 2003-10-29 13:35:07 -0800 |
commit | af5277a6784ed6a8e4671dfa79b1346bed687ae1 (patch) | |
tree | 81d91d5bc7287b146a0b0ee796ae3b8acb7fbbcf /sim/eventq.cc | |
parent | 8da9fcdd751bcb74c17e72d7d0a6c7ccf259552c (diff) | |
download | gem5-af5277a6784ed6a8e4671dfa79b1346bed687ae1.tar.xz |
Serialization support for Alpha TLBs, PhysicalMemory, and SimpleCPU.
arch/alpha/alpha_memory.cc:
arch/alpha/alpha_memory.hh:
Serialize TLB contents.
cpu/simple_cpu/simple_cpu.cc:
cpu/simple_cpu/simple_cpu.hh:
Complete serialization of SimpleCPU (including owned events).
sim/eventq.cc:
sim/eventq.hh:
Basic serialization for events.
Still need to handle dynamic events (not owned by a SimObject).
sim/serialize.cc:
sim/serialize.hh:
Export serialization filename so PhysicalMemory can
derive its filename from that.
--HG--
extra : convert_revision : 4db851c5880f73f576ca092d5e5ad4256048eb51
Diffstat (limited to 'sim/eventq.cc')
-rw-r--r-- | sim/eventq.cc | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/sim/eventq.cc b/sim/eventq.cc index 7138d8688..77eb490c7 100644 --- a/sim/eventq.cc +++ b/sim/eventq.cc @@ -118,6 +118,39 @@ EventQueue::serviceOne() delete event; } + +void +Event::serialize(std::ostream &os) +{ + SERIALIZE_SCALAR(_when); + SERIALIZE_SCALAR(_priority); + SERIALIZE_ENUM(_flags); +} + + +void +Event::unserialize(const IniFile *db, const string §ion) +{ + if (scheduled()) + deschedule(); + + UNSERIALIZE_SCALAR(_when); + UNSERIALIZE_SCALAR(_priority); + + // need to see if original event was in a scheduled, unsquashed + // state, but don't want to restore those flags in the current + // object itself (since they aren't immediately true) + UNSERIALIZE_ENUM(_flags); + bool wasScheduled = (_flags & Scheduled) && !(_flags & Squashed); + _flags &= ~(Squashed | Scheduled); + + if (wasScheduled) { + DPRINTF(Config, "rescheduling at %d\n", _when); + schedule(_when); + } +} + + void EventQueue::nameChildren() { |