Add Quiesce trace flag to track CPU quiesce/wakeup events.

--HG--
extra : convert_revision : 23be99d0fe6e2184523efe5d9e0a1ac7bf19d087
This commit is contained in:
Steve Reinhardt 2006-10-21 23:32:14 -07:00
parent 883ed108e4
commit 0159529343
3 changed files with 17 additions and 6 deletions

View file

@ -133,6 +133,7 @@ baseFlags = [
'PciConfigAll',
'Pipeline',
'Printf',
'Quiesce',
'ROB',
'Regs',
'Rename',

View file

@ -28,6 +28,7 @@
* Authors: Kevin Lim
*/
#include "cpu/base.hh"
#include "cpu/thread_context.hh"
#include "cpu/quiesce_event.hh"
@ -39,6 +40,7 @@ EndQuiesceEvent::EndQuiesceEvent(ThreadContext *_tc)
void
EndQuiesceEvent::process()
{
DPRINTF(Quiesce, "activating %s\n", tc->getCpuPtr()->name());
tc->activate();
}

View file

@ -87,10 +87,15 @@ namespace AlphaPseudo
EndQuiesceEvent *quiesceEvent = tc->getQuiesceEvent();
Tick resume = curTick + Clock::Int::ns * ns;
if (quiesceEvent->scheduled())
quiesceEvent->reschedule(curTick + Clock::Int::ns * ns);
quiesceEvent->reschedule(resume);
else
quiesceEvent->schedule(curTick + Clock::Int::ns * ns);
quiesceEvent->schedule(resume);
DPRINTF(Quiesce, "%s: quiesceNs(%d) until %d\n",
tc->getCpuPtr()->name(), ns, resume);
tc->suspend();
if (tc->getKernelStats())
@ -105,12 +110,15 @@ namespace AlphaPseudo
EndQuiesceEvent *quiesceEvent = tc->getQuiesceEvent();
Tick resume = curTick + tc->getCpuPtr()->cycles(cycles);
if (quiesceEvent->scheduled())
quiesceEvent->reschedule(curTick +
tc->getCpuPtr()->cycles(cycles));
quiesceEvent->reschedule(resume);
else
quiesceEvent->schedule(curTick +
tc->getCpuPtr()->cycles(cycles));
quiesceEvent->schedule(resume);
DPRINTF(Quiesce, "%s: quiesceCycles(%d) until %d\n",
tc->getCpuPtr()->name(), cycles, resume);
tc->suspend();
if (tc->getKernelStats())