gem5
v19.0.0.0
|
#include <system.hh>
Public Types | |
typedef X86SystemParams | Params |
![]() | |
typedef SystemParams | Params |
![]() | |
typedef SimObjectParams | Params |
Public Member Functions | |
X86System (Params *p) | |
~X86System () | |
void | initState () |
Serialization stuff. More... | |
![]() | |
void | init () override |
After all objects have been created and all ports are connected, check that the system port is connected. More... | |
MasterPort & | getSystemPort () |
Get a reference to the system port that can be used by non-structural simulation objects like processes or threads, or external entities like loaders and debuggers, etc, to access the memory system. More... | |
Port & | getPort (const std::string &if_name, PortID idx=InvalidPortID) override |
Additional function to return the Port of a memory object. More... | |
unsigned int | cacheLineSize () const |
Get the cache line size of the system. More... | |
ThreadContext * | findFreeContext () |
ThreadContext * | getThreadContext (ContextID tid) const |
bool | schedule (PCEvent *event) override |
bool | remove (PCEvent *event) override |
unsigned | numContexts () const |
int | numRunningContexts () |
Return number of running (non-halted) thread contexts in system. More... | |
KvmVM * | getKvmVM () |
Get a pointer to the Kernel Virtual Machine (KVM) SimObject, if present. More... | |
bool | validKvmEnvironment () const |
Verify gem5 configuration will support KVM emulation. More... | |
PhysicalMemory & | getPhysMem () |
Get a pointer to access the physical memory of the system. More... | |
Addr | freeMemSize () const |
Amount of physical memory that is still free. More... | |
Addr | memSize () const |
Amount of physical memory that exists. More... | |
bool | isMemAddr (Addr addr) const |
Check if a physical address is within a range of a memory that is part of the global address map. More... | |
Arch | getArch () const |
Get the architecture. More... | |
ByteOrder | getGuestByteOrder () const |
Get the guest byte order. More... | |
Addr | getPageBytes () const |
Get the page bytes for the ISA. More... | |
Addr | getPageShift () const |
Get the number of bits worth of in-page address for the ISA. More... | |
ThermalModel * | getThermalModel () const |
The thermal model used for this system (if any). More... | |
MasterID | getMasterId (const SimObject *master, std::string submaster=std::string()) |
Request an id used to create a request object in the system. More... | |
MasterID | getGlobalMasterId (const std::string &master_name) |
Registers a GLOBAL MasterID, which is a MasterID not related to any particular SimObject; since no SimObject is passed, the master gets registered by providing the full master name. More... | |
std::string | getMasterName (MasterID master_id) |
Get the name of an object for a given request id. More... | |
MasterID | lookupMasterId (const SimObject *obj) const |
Looks up the MasterID for a given SimObject returns an invalid MasterID (invldMasterId) if not found. More... | |
MasterID | lookupMasterId (const std::string &name) const |
Looks up the MasterID for a given object name string returns an invalid MasterID (invldMasterId) if not found. More... | |
MasterID | maxMasters () |
Get the number of masters registered in the system. More... | |
void | regStats () override |
Callback to set stat parameters. More... | |
uint64_t | incWorkItemsBegin () |
Called by pseudo_inst to track the number of work items started by this system. More... | |
uint64_t | incWorkItemsEnd () |
Called by pseudo_inst to track the number of work items completed by this system. More... | |
int | markWorkItem (int index) |
Called by pseudo_inst to mark the cpus actively executing work items. More... | |
void | workItemBegin (uint32_t tid, uint32_t workid) |
void | workItemEnd (uint32_t tid, uint32_t workid) |
bool | breakpoint () |
System (Params *p) | |
~System () | |
void | initState () override |
initState() is called on each SimObject when not restoring from a checkpoint. More... | |
const Params * | params () const |
const AddrRange & | m5opRange () const |
Range used by memory-mapped m5 pseudo-ops if enabled. More... | |
Addr | getKernelStart () const |
Returns the address the kernel starts at. More... | |
Addr | getKernelEnd () const |
Returns the address the kernel ends at. More... | |
Addr | getKernelEntry () const |
Returns the address the entry point to the kernel code. More... | |
Addr | allocPhysPages (int npages) |
Allocate npages contiguous unused physical pages. More... | |
ContextID | registerThreadContext (ThreadContext *tc, ContextID assigned=InvalidContextID) |
void | replaceThreadContext (ThreadContext *tc, ContextID context_id) |
void | serialize (CheckpointOut &cp) const override |
Serialize an object. More... | |
void | unserialize (CheckpointIn &cp) override |
Unserialize an object. More... | |
void | drainResume () override |
Resume execution after a successful drain. More... | |
bool | isAtomicMode () const |
Is the system in atomic mode? More... | |
bool | isTimingMode () const |
Is the system in timing mode? More... | |
bool | bypassCaches () const |
Should caches be bypassed? More... | |
Enums::MemoryMode | getMemoryMode () const |
Get the memory mode of the system. More... | |
void | setMemoryMode (Enums::MemoryMode mode) |
Change the memory mode of the system. More... | |
template<class T , typename... Args> | |
T * | addFuncEvent (const SymbolTable *symtab, const char *lbl, const std::string &desc, Args... args) |
Add a function-based event to the given function, to be looked up in the specified symbol table. More... | |
template<class T > | |
T * | addFuncEvent (const SymbolTable *symtab, const char *lbl) |
template<class T , typename... Args> | |
T * | addFuncEventOrPanic (const SymbolTable *symtab, const char *lbl, Args... args) |
template<class T , typename... Args> | |
T * | addKernelFuncEvent (const char *lbl, Args... args) |
Add a function-based event to a kernel symbol. More... | |
template<class T , typename... Args> | |
T * | addKernelFuncEventOrPanic (const char *lbl, Args... args) |
![]() | |
const Params * | params () const |
SimObject (const Params *_params) | |
virtual | ~SimObject () |
virtual const std::string | name () const |
virtual void | loadState (CheckpointIn &cp) |
loadState() is called on each SimObject when restoring from a checkpoint. More... | |
virtual void | regProbePoints () |
Register probe points for this object. More... | |
virtual void | regProbeListeners () |
Register probe listeners for this object. More... | |
ProbeManager * | getProbeManager () |
Get the probe manager for this object. More... | |
virtual void | startup () |
startup() is the final initialization call before simulation. More... | |
DrainState | drain () override |
Provide a default implementation of the drain interface for objects that don't need draining. More... | |
virtual void | memWriteback () |
Write back dirty buffers to memory using functional writes. More... | |
virtual void | memInvalidate () |
Invalidate the contents of memory buffers. More... | |
![]() | |
EventManager (EventManager &em) | |
EventManager (EventManager *em) | |
EventManager (EventQueue *eq) | |
EventQueue * | eventQueue () const |
void | schedule (Event &event, Tick when) |
void | deschedule (Event &event) |
void | reschedule (Event &event, Tick when, bool always=false) |
void | schedule (Event *event, Tick when) |
void | deschedule (Event *event) |
void | reschedule (Event *event, Tick when, bool always=false) |
void | wakeupEventQueue (Tick when=(Tick) -1) |
void | setCurTick (Tick newVal) |
![]() | |
Serializable () | |
virtual | ~Serializable () |
void | serializeSection (CheckpointOut &cp, const char *name) const |
Serialize an object into a new section. More... | |
void | serializeSection (CheckpointOut &cp, const std::string &name) const |
void | unserializeSection (CheckpointIn &cp, const char *name) |
Unserialize an a child object. More... | |
void | unserializeSection (CheckpointIn &cp, const std::string &name) |
![]() | |
DrainState | drainState () const |
Return the current drain state of an object. More... | |
virtual void | notifyFork () |
Notify a child process of a fork. More... | |
![]() | |
Group ()=delete | |
Group (const Group &)=delete | |
Group & | operator= (const Group &)=delete |
Group (Group *parent, const char *name=nullptr) | |
Construct a new statistics group. More... | |
virtual | ~Group () |
virtual void | resetStats () |
Callback to reset stats. More... | |
virtual void | preDumpStats () |
Callback before stats are dumped. More... | |
void | addStat (Stats::Info *info) |
Register a stat with this group. More... | |
const std::map< std::string, Group * > & | getStatGroups () const |
Get all child groups associated with this object. More... | |
const std::vector< Info * > & | getStats () const |
Get all stats associated with this object. More... | |
void | addStatGroup (const char *name, Group *block) |
Add a stat block as a child of this block. More... | |
Protected Member Functions | |
void | writeOutSMBiosTable (Addr header, Addr &headerSize, Addr &tableSize, Addr table=0) |
void | writeOutMPTable (Addr fp, Addr &fpSize, Addr &tableSize, Addr table=0) |
const Params * | params () const |
virtual Addr | fixFuncEventAddr (Addr addr) |
Fix up an address used to match PCs for hooking simulator events on to target function executions. More... | |
![]() | |
std::string | stripSystemName (const std::string &master_name) const |
Strips off the system name from a master name. More... | |
MasterID | _getMasterId (const SimObject *master, const std::string &master_name) |
helper function for getMasterId More... | |
std::string | leafMasterName (const SimObject *master, const std::string &submaster) |
Helper function for constructing the full (sub)master name by providing the root master and the relative submaster name. More... | |
virtual void | serializeSymtab (CheckpointOut &os) const |
If needed, serialize additional symbol table entries for a specific subclass of this system. More... | |
virtual void | unserializeSymtab (CheckpointIn &cp) |
If needed, unserialize additional symbol table entries for a specific subclass of this system. More... | |
![]() | |
Drainable () | |
virtual | ~Drainable () |
void | signalDrainDone () const |
Signal that an object is drained. More... | |
Protected Attributes | |
X86ISA::SMBios::SMBiosTable * | smbiosTable |
X86ISA::IntelMP::FloatingPointer * | mpFloatingPointer |
X86ISA::IntelMP::ConfigTable * | mpConfigTable |
X86ISA::ACPI::RSDP * | rsdp |
![]() | |
KvmVM *const | kvmVM |
PhysicalMemory | physmem |
Enums::MemoryMode | memoryMode |
const unsigned int | _cacheLineSize |
uint64_t | workItemsBegin |
uint64_t | workItemsEnd |
uint32_t | numWorkIds |
std::vector< bool > | activeCpus |
std::vector< MasterInfo > | masters |
This array is a per-system list of all devices capable of issuing a memory system request and an associated string for each master id. More... | |
ThermalModel * | thermalModel |
Params * | _params |
const AddrRange | _m5opRange |
Range for memory-mapped m5 pseudo ops. More... | |
![]() | |
const SimObjectParams * | _params |
Cached copy of the object parameters. More... | |
![]() | |
EventQueue * | eventq |
A pointer to this object's event queue. More... | |
Additional Inherited Members | |
![]() | |
static void | printSystems () |
![]() | |
static void | serializeAll (CheckpointOut &cp) |
Serialize all SimObjects in the system. More... | |
static SimObject * | find (const char *name) |
Find the SimObject with the given name and return a pointer to it. More... | |
![]() | |
static const std::string & | currentSection () |
Get the fully-qualified name of the active section. More... | |
static void | serializeAll (const std::string &cpt_dir) |
static void | unserializeGlobals (CheckpointIn &cp) |
![]() | |
std::vector< ThreadContext * > | threadContexts |
const bool | multiThread |
Addr | pagePtr |
uint64_t | init_param |
PortProxy | physProxy |
Port to physical memory used for writing object files into ram at boot. More... | |
SymbolTable * | kernelSymtab |
kernel symbol table More... | |
ObjectFile * | kernel |
Object pointer for the kernel code. More... | |
MemoryImage | kernelImage |
std::vector< ObjectFile * > | kernelExtras |
Additional object files. More... | |
Addr | kernelStart |
Beginning of kernel code. More... | |
Addr | kernelEnd |
End of kernel code. More... | |
Addr | kernelEntry |
Entry point in the kernel to start at. More... | |
Addr | loadAddrMask |
Mask that should be anded for binary/symbol loading. More... | |
Addr | loadAddrOffset |
Offset that should be used for binary/symbol loading. More... | |
std::vector< BaseRemoteGDB * > | remoteGDB |
Counter | totalNumInsts |
std::map< std::pair< uint32_t, uint32_t >, Tick > | lastWorkItemStarted |
std::map< uint32_t, Stats::Histogram * > | workItemStats |
FutexMap | futexMap |
std::set< int > | PIDs |
Process set to track which PIDs have already been allocated. More... | |
std::list< BasicSignal > | signalList |
std::vector< RedirectPath * > | redirectPaths |
![]() | |
static std::vector< System * > | systemList |
static int | numSystemsRunning = 0 |
static const int | maxPID = 32768 |
![]() | |
static int | ckptCount = 0 |
static int | ckptMaxCount = 0 |
static int | ckptPrevCount = -1 |
typedef X86SystemParams X86System::Params |
X86System::X86System | ( | Params * | p | ) |
Definition at line 54 of file system.cc.
Referenced by ~X86System().
X86System::~X86System | ( | ) |
Definition at line 371 of file system.cc.
References smbiosTable, and X86System().
Fix up an address used to match PCs for hooking simulator events on to target function executions.
See comment in system.cc for details.
Reimplemented from System.
Definition at line 106 of file system.hh.
References X86ISA::addr.
|
virtual |
Serialization stuff.
Reimplemented from SimObject.
Definition at line 107 of file system.cc.
References X86ISA::base, MipsISA::ds, fatal, ObjectFile::getArch(), ThreadContext::getSystemPtr(), htole(), ObjectFile::I386, System::initState(), X86ISA::installSegDesc(), X86ISA::InitInterrupt::invoke(), System::kernel, System::kernelEntry, X86ISA::MISCREG_CR0, X86ISA::MISCREG_CR3, X86ISA::MISCREG_CR4, X86ISA::MISCREG_CS, X86ISA::MISCREG_DS, X86ISA::MISCREG_EFER, X86ISA::MISCREG_ES, X86ISA::MISCREG_FS, X86ISA::MISCREG_GS, X86ISA::MISCREG_SS, X86ISA::MISCREG_TR, X86ISA::MISCREG_TSG_BASE, X86ISA::MISCREG_TSG_LIMIT, X86ISA::MISCREG_TSL, ArmISA::offset, ThreadContext::pcState(), System::physProxy, ThreadContext::readMiscRegNoEffect(), roundUp(), X86ISA::SEGMENT_REG_CS, X86ISA::SEGMENT_REG_DS, X86ISA::SEGMENT_REG_ES, X86ISA::SEGMENT_REG_FS, X86ISA::SEGMENT_REG_GS, X86ISA::SEGMENT_REG_SS, ThreadContext::setMiscReg(), X86ISA::SYS_SEGMENT_REG_TR, System::threadContexts, PortProxy::writeBlob(), writeOutMPTable(), and writeOutSMBiosTable().
Referenced by LinuxX86System::initState().
|
protected |
Definition at line 345 of file system.cc.
References mpConfigTable, mpFloatingPointer, System::physProxy, X86ISA::IntelMP::FloatingPointer::setTableAddr(), X86ISA::IntelMP::FloatingPointer::writeOut(), and X86ISA::IntelMP::ConfigTable::writeOut().
Referenced by initState().
|
protected |
Definition at line 327 of file system.cc.
References System::physProxy, X86ISA::SMBios::SMBiosTable::setTableAddr(), smbiosTable, and X86ISA::SMBios::SMBiosTable::writeOut().
Referenced by initState().
|
protected |
Definition at line 95 of file system.hh.
Referenced by writeOutMPTable().
|
protected |
Definition at line 94 of file system.hh.
Referenced by writeOutMPTable().
|
protected |
|
protected |
Definition at line 93 of file system.hh.
Referenced by writeOutSMBiosTable(), and ~X86System().