The Pedigree Project 0.1
Classes | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
Virtio::Queue Class Reference
+ Collaboration diagram for Virtio::Queue:

Classes

struct  Descriptor
 

Public Member Functions

bool submit (const Buffer *buffers, size_t count, void *cookie)
 
bool pop (Completion &completion)
 
uint16_t depth () const
 
void stop ()
 

Private Member Functions

struct Virtio::Queue::Descriptor __attribute__ ((packed))
 
bool initialise (uint16_t depth, PciTransport *transport)
 
uint64_t descriptorAddress () const
 
uint64_t availableAddress () const
 
uint64_t usedAddress () const
 

Private Attributes

MemoryRegion m_Descriptors
 
MemoryRegion m_Available
 
MemoryRegion m_Used
 
Mutex m_Lock
 
PciTransport * m_Transport
 
void * m_Cookies [MaxDepth]
 
uint16_t m_Next [MaxDepth]
 
uint16_t m_ChainLength [MaxDepth]
 
uint16_t m_FreeHead
 
uint16_t m_FreeCount
 
uint16_t m_Depth
 
uint16_t m_AvailableIndex
 
uint16_t m_UsedIndex
 
bool m_Active [MaxDepth]
 
bool m_Online
 
bool m_DmaArmed
 
bool m_Attached
 

Static Private Attributes

static constexpr uint16_t MaxDepth = 256
 
static constexpr uint16_t Invalid = 0xffff
 

Friends

class PciTransport
 

Detailed Description

Definition at line 25 of file Virtqueue.h.

Constructor & Destructor Documentation

◆ Queue()

Queue::Queue ( )

Definition at line 14 of file Virtqueue.cc.

◆ ~Queue()

Queue::~Queue ( )

Definition at line 32 of file Virtqueue.cc.

Member Function Documentation

◆ availableAddress()

uint64_t Virtio::Queue::availableAddress ( ) const
inlineprivate

Definition at line 55 of file Virtqueue.h.

◆ depth()

uint16_t Virtio::Queue::depth ( ) const
inline

Definition at line 34 of file Virtqueue.h.

◆ descriptorAddress()

uint64_t Virtio::Queue::descriptorAddress ( ) const
inlineprivate

Definition at line 52 of file Virtqueue.h.

◆ initialise()

bool Queue::initialise ( uint16_t  depth,
PciTransport *  transport 
)
private

Definition at line 38 of file Virtqueue.cc.

◆ pop()

bool Queue::pop ( Completion &  completion)

Definition at line 102 of file Virtqueue.cc.

◆ stop()

void Queue::stop ( )

Definition at line 144 of file Virtqueue.cc.

◆ submit()

bool Queue::submit ( const Buffer *  buffers,
size_t  count,
void *  cookie 
)

Definition at line 64 of file Virtqueue.cc.

◆ usedAddress()

uint64_t Virtio::Queue::usedAddress ( ) const
inlineprivate

Definition at line 58 of file Virtqueue.h.

Friends And Related Symbol Documentation

◆ PciTransport

friend class PciTransport
friend

Definition at line 40 of file Virtqueue.h.

Member Data Documentation

◆ Invalid

constexpr uint16_t Virtio::Queue::Invalid = 0xffff
staticconstexprprivate

Definition at line 42 of file Virtqueue.h.

◆ m_Active

bool Virtio::Queue::m_Active[MaxDepth]
private

Definition at line 75 of file Virtqueue.h.

◆ m_Attached

bool Virtio::Queue::m_Attached
private

Definition at line 78 of file Virtqueue.h.

◆ m_Available

MemoryRegion Virtio::Queue::m_Available
private

Definition at line 63 of file Virtqueue.h.

◆ m_AvailableIndex

uint16_t Virtio::Queue::m_AvailableIndex
private

Definition at line 73 of file Virtqueue.h.

◆ m_ChainLength

uint16_t Virtio::Queue::m_ChainLength[MaxDepth]
private

Definition at line 69 of file Virtqueue.h.

◆ m_Cookies

void* Virtio::Queue::m_Cookies[MaxDepth]
private

Definition at line 67 of file Virtqueue.h.

◆ m_Depth

uint16_t Virtio::Queue::m_Depth
private

Definition at line 72 of file Virtqueue.h.

◆ m_Descriptors

MemoryRegion Virtio::Queue::m_Descriptors
private

Definition at line 62 of file Virtqueue.h.

◆ m_DmaArmed

bool Virtio::Queue::m_DmaArmed
private

Definition at line 77 of file Virtqueue.h.

◆ m_FreeCount

uint16_t Virtio::Queue::m_FreeCount
private

Definition at line 71 of file Virtqueue.h.

◆ m_FreeHead

uint16_t Virtio::Queue::m_FreeHead
private

Definition at line 70 of file Virtqueue.h.

◆ m_Lock

Mutex Virtio::Queue::m_Lock
private

Definition at line 65 of file Virtqueue.h.

◆ m_Next

uint16_t Virtio::Queue::m_Next[MaxDepth]
private

Definition at line 68 of file Virtqueue.h.

◆ m_Online

bool Virtio::Queue::m_Online
private

Definition at line 76 of file Virtqueue.h.

◆ m_Transport

PciTransport* Virtio::Queue::m_Transport
private

Definition at line 66 of file Virtqueue.h.

◆ m_Used

MemoryRegion Virtio::Queue::m_Used
private

Definition at line 64 of file Virtqueue.h.

◆ m_UsedIndex

uint16_t Virtio::Queue::m_UsedIndex
private

Definition at line 74 of file Virtqueue.h.

◆ MaxDepth

constexpr uint16_t Virtio::Queue::MaxDepth = 256
staticconstexprprivate

Definition at line 41 of file Virtqueue.h.


The documentation for this class was generated from the following files: