The Pedigree Project 0.1
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
NvmeQueue Class Reference
+ Collaboration diagram for NvmeQueue:

Classes

struct  Slot
 

Public Types

enum class  Result { Success , CommandError , TransportError }
 

Public Member Functions

bool initialise (IoBase *registers, uint16_t id, uint16_t depth, size_t stride, size_t transferBytes)
 
Result execute (Nvme::Command command, void *buffer, size_t bytes, bool writing, bool interrupts, size_t timeoutSeconds, uint32_t *result=nullptr, bool interruptProbe=false)
 
bool complete (bool fromInterrupt)
 
void stop ()
 
size_t interruptCompletions () const
 
size_t maximumOutstanding () const
 
uint64_t submissionAddress () const
 
uint64_t completionAddress () const
 
uint16_t depth () const
 

Private Member Functions

bool observe (bool fromInterrupt, bool interruptsEnabled=false)
 
void stopLocked ()
 

Private Attributes

IoBasem_Registers
 
MemoryRegion m_Submission
 
MemoryRegion m_Completion
 
Slot m_Slots [Nvme::QueueDepth - 1]
 
Mutex m_Lock
 
Semaphore m_Available
 
size_t m_Stride
 
size_t m_TransferBytes
 
uint16_t m_Id
 
uint16_t m_Depth
 
uint16_t m_Tail
 
uint16_t m_Head
 
uint16_t m_SubmissionHead
 
bool m_Phase
 
bool m_Online
 
bool m_PolledInterrupt
 
size_t m_InterruptCompletions
 
size_t m_Outstanding
 
size_t m_MaximumOutstanding
 

Detailed Description

Definition at line 11 of file NvmeQueue.h.

Member Enumeration Documentation

◆ Result

enum class NvmeQueue::Result
strong

Definition at line 13 of file NvmeQueue.h.

Constructor & Destructor Documentation

◆ NvmeQueue()

NvmeQueue::NvmeQueue ( )

Definition at line 21 of file NvmeQueue.cc.

Member Function Documentation

◆ complete()

bool NvmeQueue::complete ( bool  fromInterrupt)

Definition at line 151 of file NvmeQueue.cc.

◆ completionAddress()

uint64_t NvmeQueue::completionAddress ( ) const
inline

Definition at line 26 of file NvmeQueue.h.

◆ depth()

uint16_t NvmeQueue::depth ( ) const
inline

Definition at line 29 of file NvmeQueue.h.

◆ execute()

NvmeQueue::Result NvmeQueue::execute ( Nvme::Command  command,
void *  buffer,
size_t  bytes,
bool  writing,
bool  interrupts,
size_t  timeoutSeconds,
uint32_t *  result = nullptr,
bool  interruptProbe = false 
)

Definition at line 156 of file NvmeQueue.cc.

◆ initialise()

bool NvmeQueue::initialise ( IoBase registers,
uint16_t  id,
uint16_t  depth,
size_t  stride,
size_t  transferBytes 
)

Definition at line 40 of file NvmeQueue.cc.

◆ interruptCompletions()

size_t NvmeQueue::interruptCompletions ( ) const

Definition at line 250 of file NvmeQueue.cc.

◆ maximumOutstanding()

size_t NvmeQueue::maximumOutstanding ( ) const

Definition at line 254 of file NvmeQueue.cc.

◆ observe()

bool NvmeQueue::observe ( bool  fromInterrupt,
bool  interruptsEnabled = false 
)
private

Definition at line 104 of file NvmeQueue.cc.

◆ stop()

void NvmeQueue::stop ( )

Definition at line 99 of file NvmeQueue.cc.

◆ stopLocked()

void NvmeQueue::stopLocked ( )
private

Definition at line 89 of file NvmeQueue.cc.

◆ submissionAddress()

uint64_t NvmeQueue::submissionAddress ( ) const
inline

Definition at line 23 of file NvmeQueue.h.

Member Data Documentation

◆ m_Available

Semaphore NvmeQueue::m_Available
private

Definition at line 52 of file NvmeQueue.h.

◆ m_Completion

MemoryRegion NvmeQueue::m_Completion
private

Definition at line 49 of file NvmeQueue.h.

◆ m_Depth

uint16_t NvmeQueue::m_Depth
private

Definition at line 56 of file NvmeQueue.h.

◆ m_Head

uint16_t NvmeQueue::m_Head
private

Definition at line 58 of file NvmeQueue.h.

◆ m_Id

uint16_t NvmeQueue::m_Id
private

Definition at line 55 of file NvmeQueue.h.

◆ m_InterruptCompletions

size_t NvmeQueue::m_InterruptCompletions
private

Definition at line 63 of file NvmeQueue.h.

◆ m_Lock

Mutex NvmeQueue::m_Lock
mutableprivate

Definition at line 51 of file NvmeQueue.h.

◆ m_MaximumOutstanding

size_t NvmeQueue::m_MaximumOutstanding
private

Definition at line 65 of file NvmeQueue.h.

◆ m_Online

bool NvmeQueue::m_Online
private

Definition at line 61 of file NvmeQueue.h.

◆ m_Outstanding

size_t NvmeQueue::m_Outstanding
private

Definition at line 64 of file NvmeQueue.h.

◆ m_Phase

bool NvmeQueue::m_Phase
private

Definition at line 60 of file NvmeQueue.h.

◆ m_PolledInterrupt

bool NvmeQueue::m_PolledInterrupt
private

Definition at line 62 of file NvmeQueue.h.

◆ m_Registers

IoBase* NvmeQueue::m_Registers
private

Definition at line 47 of file NvmeQueue.h.

◆ m_Slots

Slot NvmeQueue::m_Slots[Nvme::QueueDepth - 1]
private

Definition at line 50 of file NvmeQueue.h.

◆ m_Stride

size_t NvmeQueue::m_Stride
private

Definition at line 53 of file NvmeQueue.h.

◆ m_Submission

MemoryRegion NvmeQueue::m_Submission
private

Definition at line 48 of file NvmeQueue.h.

◆ m_SubmissionHead

uint16_t NvmeQueue::m_SubmissionHead
private

Definition at line 59 of file NvmeQueue.h.

◆ m_Tail

uint16_t NvmeQueue::m_Tail
private

Definition at line 57 of file NvmeQueue.h.

◆ m_TransferBytes

size_t NvmeQueue::m_TransferBytes
private

Definition at line 54 of file NvmeQueue.h.


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