diff options
author | Steve Reinhardt <stever@eecs.umich.edu> | 2006-06-09 23:18:46 -0400 |
---|---|---|
committer | Steve Reinhardt <stever@eecs.umich.edu> | 2006-06-09 23:18:46 -0400 |
commit | 95019d0c6f1675f42d899f2899e06d3017088f25 (patch) | |
tree | 7618cd95da8299faff8dd682e088ee707cae6a7f /src/sim/eventq.cc | |
parent | 6de5d73a999240f92f050393bb10028968275835 (diff) | |
parent | 29e34a739b991af8d8e1eafe75ecb0904c324dc8 (diff) | |
download | gem5-95019d0c6f1675f42d899f2899e06d3017088f25.tar.xz |
Merge vm1.(none):/home/stever/bk/newmem
into vm1.(none):/home/stever/bk/newmem-py
src/python/m5/__init__.py:
src/sim/syscall_emul.cc:
Hand merge.
--HG--
extra : convert_revision : e2542735323e648383c89382421d98a7d1d761bf
Diffstat (limited to 'src/sim/eventq.cc')
-rw-r--r-- | src/sim/eventq.cc | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/sim/eventq.cc b/src/sim/eventq.cc index d90d0923a..6ae838897 100644 --- a/src/sim/eventq.cc +++ b/src/sim/eventq.cc @@ -102,7 +102,7 @@ EventQueue::remove(Event *event) prev->next = curr->next; } -void +Event * EventQueue::serviceOne() { Event *event = head; @@ -110,13 +110,20 @@ EventQueue::serviceOne() head = event->next; // handle action - if (!event->squashed()) + if (!event->squashed()) { event->process(); - else + if (event->isExitEvent()) { + assert(!event->getFlags(Event::AutoDelete)); // would be silly + return event; + } + } else { event->clearFlags(Event::Squashed); + } if (event->getFlags(Event::AutoDelete) && !event->scheduled()) delete event; + + return NULL; } |