37 enum SubType { ATA = 0, ATAPI };
43 virtual Disk* physicalDisk();
45 uint32_t endpointId();
48 virtual bool getPartitionUuid(
String& uuid)
const;
49 virtual bool getPartitionLabel(
String& label)
const;
52 virtual PagingStatus preparePagingTransport(
PagingTransport*& transport);
55 void retireEndpoint();
56 bool tryCloseEndpoint();
57 void reopenEndpoint();
60 void reserveEndpoint();
61 void publishEndpoint();
69 virtual SubType getSubType();
105 virtual BufferView acquireView(uint64_t location,
bool writable, uint64_t& token);
106 virtual void releaseView(uint64_t token,
bool writable);
116 MUST_USE_RESULT virtual bool readInto(uint64_t location,
void* buffer,
size_t length);
117 MUST_USE_RESULT virtual bool writeFrom(uint64_t location,
const void* buffer,
size_t length);
125 static constexpr size_t MaxReadBuffers = 32;
132 physical_uintptr_t dmaPhysical = 0;
134 static constexpr size_t MaxWriteBuffers = 32;
179 virtual void write(uint64_t location);
192 virtual void align(uint64_t location);
200 virtual size_t getSize()
const;
209 virtual size_t getBlockSize()
const;
212 virtual size_t getNativeBlockSize()
const;
232 virtual void unpin(uint64_t location) = 0;
254 virtual bool cacheIsCritical();
266 virtual void flush(uint64_t location);
273 virtual bool sync(uint64_t location,
bool async);
275 static constexpr size_t MaxSyncPages = 64;
278 MUST_USE_RESULT virtual bool syncPages(
const uint64_t* locations,
size_t count);