sim: Make the drain state a global typed enum

The drain state enum is currently a part of the Drainable
interface. The same state machine will be used by the DrainManager to
identify the global state of the simulator. Make the drain state a
global typed enum to better cater for this usage scenario.
This commit is contained in:
Andreas Sandberg
2015-07-07 09:51:04 +01:00
parent 1dc5e63b88
commit e9c3d59aae
27 changed files with 103 additions and 103 deletions

View File

@@ -783,12 +783,12 @@ BaseCache::drain(DrainManager *dm)
// Set status
if (count != 0) {
setDrainState(Drainable::Draining);
setDrainState(DrainState::Draining);
DPRINTF(Drain, "Cache not drained\n");
return count;
}
setDrainState(Drainable::Drained);
setDrainState(DrainState::Drained);
return 0;
}

View File

@@ -186,7 +186,7 @@ MSHRQueue::deallocateOne(MSHR *mshr)
DPRINTF(Drain, "MSHRQueue now empty, signalling drained\n");
drainManager->signalDrainDone();
drainManager = NULL;
setDrainState(Drainable::Drained);
setDrainState(DrainState::Drained);
}
return retval;
}
@@ -269,11 +269,11 @@ unsigned int
MSHRQueue::drain(DrainManager *dm)
{
if (allocated == 0) {
setDrainState(Drainable::Drained);
setDrainState(DrainState::Drained);
return 0;
} else {
drainManager = dm;
setDrainState(Drainable::Draining);
setDrainState(DrainState::Draining);
return 1;
}
}

View File

@@ -2189,9 +2189,9 @@ DRAMCtrl::drain(DrainManager *dm)
}
if (count)
setDrainState(Drainable::Draining);
setDrainState(DrainState::Draining);
else
setDrainState(Drainable::Drained);
setDrainState(DrainState::Drained);
return count;
}

View File

@@ -362,11 +362,11 @@ DRAMSim2::drain(DrainManager* dm)
// check our outstanding reads and writes and if any they need to
// drain
if (nbrOutstanding() != 0) {
setDrainState(Drainable::Draining);
setDrainState(DrainState::Draining);
drainManager = dm;
return 1;
} else {
setDrainState(Drainable::Drained);
setDrainState(DrainState::Drained);
return 0;
}
}

View File

@@ -192,12 +192,12 @@ DMASequencer::drain(DrainManager *dm)
drainManager = dm;
DPRINTF(Drain, "DMASequencer not drained\n");
setDrainState(Drainable::Draining);
setDrainState(DrainState::Draining);
return child_drain_count + 1;
}
drainManager = NULL;
setDrainState(Drainable::Drained);
setDrainState(DrainState::Drained);
return child_drain_count;
}

View File

@@ -449,12 +449,12 @@ RubyPort::drain(DrainManager *dm)
drainManager = dm;
DPRINTF(Drain, "RubyPort not drained\n");
setDrainState(Drainable::Draining);
setDrainState(DrainState::Draining);
return child_drain_count + 1;
}
drainManager = NULL;
setDrainState(Drainable::Drained);
setDrainState(DrainState::Drained);
return child_drain_count;
}

View File

@@ -77,7 +77,7 @@ Sequencer::~Sequencer()
void
Sequencer::wakeup()
{
assert(getDrainState() != Drainable::Draining);
assert(getDrainState() != DrainState::Draining);
// Check for deadlock of any of the requests
Cycles current_time = curCycle();
@@ -215,7 +215,7 @@ Sequencer::insertRequest(PacketPtr pkt, RubyRequestType request_type)
// See if we should schedule a deadlock check
if (!deadlockCheckEvent.scheduled() &&
getDrainState() != Drainable::Draining) {
getDrainState() != DrainState::Draining) {
schedule(deadlockCheckEvent, clockEdge(m_deadlock_threshold));
}

View File

@@ -246,9 +246,9 @@ SimpleMemory::drain(DrainManager *dm)
}
if (count)
setDrainState(Drainable::Draining);
setDrainState(DrainState::Draining);
else
setDrainState(Drainable::Drained);
setDrainState(DrainState::Drained);
return count;
}