|
gem5 [DEVELOP-FOR-25.1]
|
#include <drain.hh>
Public Member Functions | |
| bool | tryDrain () |
| Try to drain the system. | |
| void | resume () |
| Resume normal simulation in a Drained system. | |
| void | preCheckpointRestore () |
| Run state fixups before a checkpoint restore operation. | |
| bool | isDrained () const |
| Check if the system is drained. | |
| DrainState | state () const |
| Get the simulators global drain state. | |
| void | signalDrainDone () |
| Notify the DrainManager that a Drainable object has finished draining. | |
| void | registerDrainable (Drainable *obj) |
| void | unregisterDrainable (Drainable *obj) |
Static Public Member Functions | |
| static DrainManager & | instance () |
| Get the singleton DrainManager instance. | |
Private Member Functions | |
| DrainManager () | |
| DrainManager (DrainManager &)=delete | |
| ~DrainManager () | |
| bool | allInState (DrainState state) const |
| Helper function to check if all Drainable objects are in a specific state. | |
| size_t | drainableCount () const |
| Thread-safe helper function to get the number of Drainable objects in a system. | |
Private Attributes | |
| std::mutex | globalLock |
| Lock protecting the set of drainable objects. | |
| std::vector< Drainable * > | _allDrainable |
| Set of all drainable objects. | |
| std::atomic_uint | _count |
| Number of objects still draining. | |
| DrainState | _state |
| Global simulator drain state. | |
|
private |
Definition at line 51 of file drain.cc.
References _count, _state, and gem5::Running.
Referenced by DrainManager(), and instance().
|
privatedelete |
References DrainManager().
|
private |
|
private |
Thread-safe helper function to get the number of Drainable objects in a system.
Definition at line 187 of file drain.cc.
References _allDrainable, globalLock, and gem5::X86ISA::lock.
Referenced by preCheckpointRestore(), resume(), signalDrainDone(), and tryDrain().
|
inlinestatic |
Get the singleton DrainManager instance.
Singleton instance of the drain manager, constructed on first use
Definition at line 93 of file drain.hh.
References DrainManager().
Referenced by gem5::CxxConfigManager::drain(), gem5::CxxConfigManager::drainResume(), and gem5::init_drain().
| void gem5::DrainManager::registerDrainable | ( | Drainable * | obj | ) |
Definition at line 158 of file drain.cc.
References _allDrainable, globalLock, and gem5::X86ISA::lock.
| void gem5::DrainManager::unregisterDrainable | ( | Drainable * | obj | ) |
Definition at line 167 of file drain.cc.
References _allDrainable, globalLock, and gem5::X86ISA::lock.
|
private |
Set of all drainable objects.
Definition at line 191 of file drain.hh.
Referenced by allInState(), drainableCount(), preCheckpointRestore(), registerDrainable(), resume(), tryDrain(), and unregisterDrainable().
|
private |
Number of objects still draining.
This is flagged atomic since it can be manipulated by SimObjects living in different threads.
Definition at line 198 of file drain.hh.
Referenced by DrainManager(), resume(), signalDrainDone(), and tryDrain().
|
private |
Global simulator drain state.
Definition at line 201 of file drain.hh.
Referenced by DrainManager(), isDrained(), preCheckpointRestore(), resume(), state(), and tryDrain().
|
mutableprivate |
Lock protecting the set of drainable objects.
Definition at line 188 of file drain.hh.
Referenced by drainableCount(), registerDrainable(), and unregisterDrainable().