|
gem5
v21.2.1.1
|
Virtqueue for disk requests. More...
#include <block.hh>
Public Member Functions | |
| RequestQueue (PortProxy &proxy, ByteOrder bo, uint16_t size, VirtIOBlock &_parent) | |
| virtual | ~RequestQueue () |
| void | onNotifyDescriptor (VirtDescriptor *desc) |
| Notify queue of pending incoming descriptor. More... | |
| std::string | name () const |
Public Member Functions inherited from gem5::VirtQueue | |
| virtual | ~VirtQueue () |
| void | serialize (CheckpointOut &cp) const override |
| Serialize an object. More... | |
| void | unserialize (CheckpointIn &cp) override |
| Unserialize an object. More... | |
| void | reset () |
| Reset cached state in this queue and in the associated ring buffers. More... | |
| void | setAddress (Addr address) |
| Set the base address of this queue. More... | |
| Addr | getAddress () const |
| Get the guest physical address of this queue. More... | |
| uint16_t | getSize () const |
| Get the number of descriptors available in this queue. More... | |
| VirtDescriptor * | getDescriptor (VirtDescriptor::Index index) |
| Get a pointer to a specific descriptor in the queue. More... | |
| VirtDescriptor * | consumeDescriptor () |
| Get an incoming descriptor chain from the queue. More... | |
| void | produceDescriptor (VirtDescriptor *desc, uint32_t len) |
| Send a descriptor chain to the guest. More... | |
| virtual void | onNotify () |
| Notify queue of pending events. More... | |
| void | dump () const |
| Dump the contents of a queue. More... | |
Public Member Functions inherited from gem5::Serializable | |
| 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) |
Protected Attributes | |
| VirtIOBlock & | parent |
Protected Attributes inherited from gem5::VirtQueue | |
| ByteOrder | byteOrder |
| Byte order in this queue. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from gem5::Serializable | |
| static const std::string & | currentSection () |
| Gets the fully-qualified name of the active section. More... | |
| static void | generateCheckpointOut (const std::string &cpt_dir, std::ofstream &outstream) |
| Generate a checkpoint file so that the serialization can be routed to it. More... | |
Static Public Attributes inherited from gem5::VirtQueue | |
| static const Addr | ALIGN_BITS = 12 |
| Page size used by VirtIO. It's hard-coded to 4096 bytes in the spec for historical reasons. More... | |
| static const Addr | ALIGN_SIZE = 1 << ALIGN_BITS |
Protected Member Functions inherited from gem5::VirtQueue | |
| VirtQueue (PortProxy &proxy, ByteOrder bo, uint16_t size) | |
| Instantiate a new virtqueue. More... | |
|
inline |
|
inlinevirtual |
|
inline |
Definition at line 177 of file block.hh.
References gem5::Named::name(), and parent.
|
virtual |
Notify queue of pending incoming descriptor.
This method is called by the default implementation of onNotify() to notify the device model of pending data in a descriptor chain.
Device models should normally overload one of onNotify() and onNotifyDescriptor().
Reimplemented from gem5::VirtQueue.
Definition at line 127 of file block.cc.
References gem5::VirtQueue::byteOrder, gem5::VirtDescriptor::chainRead(), gem5::VirtDescriptor::chainSize(), gem5::VirtDescriptor::chainWrite(), DPRINTF, gem5::htog(), gem5::VirtIODeviceBase::kick(), parent, gem5::VirtQueue::produceDescriptor(), gem5::VirtIOBlock::read(), gem5::VirtIOBlock::S_OK, gem5::VirtIOBlock::S_UNSUPP, gem5::VirtDescriptor::size(), gem5::ArmISA::status, gem5::VirtIOBlock::T_FLUSH, gem5::VirtIOBlock::T_IN, gem5::VirtIOBlock::T_OUT, warn, and gem5::VirtIOBlock::write().
|
protected |
Definition at line 180 of file block.hh.
Referenced by name(), and onNotifyDescriptor().