|
ReXGlue SDK
|
Public Member Functions | |
| void | Queue (const IONotification ¬ification) |
| bool | Wait (u64 wait_ticks, IONotification *out_notification) |
Public Attributes | |
| std::mutex | notification_lock |
| std::queue< IONotification > | notifications |
| std::unique_ptr< rex::platform::Semaphore > | notification_semaphore |
Static Public Attributes | |
| static constexpr u32 | kMaxNotifications = 1024 |
| void rex::kernel::IOCompletionObject::Queue | ( | const IONotification & | notification | ) |
Queues a notification and wakes one waiter.
| bool rex::kernel::IOCompletionObject::Wait | ( | u64 | wait_ticks, |
| IONotification * | out_notification ) |
Waits for a notification and dequeues it.
| wait_ticks | The timeout in 100 nanosecond ticks, negative for relative. |
| out_notification | Receives the notification when one arrived. |
|
staticconstexpr |
Maximum count of the notification semaphore, so the queue holds at most this many entries.
| std::unique_ptr<rex::platform::Semaphore> rex::kernel::IOCompletionObject::notification_semaphore |
Counts the queued notifications, waited on to receive the next one.
| std::queue<IONotification> rex::kernel::IOCompletionObject::notifications |
Completed requests in arrival order, one per release of notification_semaphore.