14 bool initialiseController();
16 bool identify(uint32_t nsid, uint8_t kind,
void* buffer,
bool interruptProbe =
false);
17 bool readWrite(uint32_t nsid, uint64_t lba, uint32_t blocks,
void* buffer,
size_t bytes,
19 bool flush(uint32_t nsid);
20 size_t interruptCompletions()
const;
21 size_t maximumOutstanding()
const;
22 size_t maxTransfer()
const {
25 const char* model()
const {
32 bool sendCommand(
size_t, uintptr_t, uint8_t, uintptr_t, uint16_t,
bool)
override {
37 size_t getNumUnits()
override {
42 bool waitReady(
bool ready);
44 void failController();
46 bool writing =
false, uint32_t* result =
nullptr,
bool interruptProbe =
false);
48 bool discoverNamespaces(uint32_t maximumId);
49 NvmeDisk* findNamespace(uint32_t nsid);
57 mutable Mutex m_IrqLock;
58 size_t m_ReadyMilliseconds;
61 uint16_t m_OriginalCommand;