29#include <EASTL/functional.h>
47 struct ReadSectorsAwaiter {
50 ~ReadSectorsAwaiter() {}
51 constexpr bool await_ready()
const {
return false; }
53 void await_suspend(std::coroutine_handle<U> handle) {
54 m_cdrom.readSectors(m_sector, m_count, m_buffer, [handle,
this](
bool result) {
59 bool await_resume() {
return m_result; }
144 ReadRequest m_readRequest;
The base CDRom class.
Definition cdrom.hh:46
TaskQueue::Task scheduleReadRequest(ReadRequest *request)
Schedule a read operation.
Definition cdrom.cpp:39
virtual void readSectors(uint32_t sector, uint32_t count, void *buffer, eastl::function< void(bool)> &&callback)=0
Read a sector from the CDRom.
virtual ~CDRom()
Definition cdrom.hh:70
ReadSectorsAwaiter readSectorsForCoroutine(uint32_t sector, uint32_t count, void *buffer)
Wrapper around the readSectors method for coroutines.
Definition cdrom.hh:139
TaskQueue::Task scheduleReadSectors(uint32_t sector, uint32_t count, void *buffer)
Schedule a read operation.
Definition cdrom.cpp:29
The Task class.
Definition task.hh:140
void * result
Definition memcpy.c:47
Definition cdrom-loader.hh:39
An asynchronous read request.
Definition cdrom.hh:78
void * buffer
Definition cdrom.hh:81
uint32_t LBA
Definition cdrom.hh:79
uint32_t count
Definition cdrom.hh:80
static void * buffer
Definition syscalls.h:230
static const void size_t count
Definition syscalls.h:145
static int sector
Definition syscalls.h:467
void uint32_t(classId, spec)