Copy constructor
Destructor
Available space in submission queue before it becomes full
Counter of invalid submissions (out-of-bound index in submission array)
Check if there is some CompletionEntry to process.
Native io_uring file descriptor
Get first CompletionEntry from cq ring
Check if there is space for another SubmissionEntry to submit.
Number of entries in completion queue
Advances the userspace submision queue and returns last SubmissionEntry.
If completion queue is full, the new event maybe dropped. This value records number of dropped events.
io_uring parameters
Move to next CompletionEntry
Adds new entry to the SubmissionQueue.
Similar to put(SubmissionEntry) but in this case we can provide our custom type (args) to be filled to next SubmissionEntry in queue.
Adds new entry to the SubmissionQueue.
Register single buffer to be mapped into the kernel for faster buffered operations.
Registers event file descriptor that would be used as a notification mechanism on completion queue change.
Register files for I/O.
Submits qued SubmissionEntry to be processed by kernel.
Releases all previously registered buffers associated with the io_uring instance.
Unregister previously registered notification event file descriptor.
All previously registered files associated with the io_uring instance will be unregistered.
Simmilar to submit but with this method we just wait for required number of CompletionEntries.
Main entry point to work with io_uring.
It hides SubmissionQueue and CompletionQueue behind standard range interface. We put in SubmissionEntry entries and take out CompletionEntry entries.
Use predefined prepXX methods to fill required fields of SubmissionEntry before put or during putWith.
Note: prepXX functions doesn't touch previous entry state, just fills in operation properties. This is because for less error prone interface it is cleared automatically when prepared using putWith. So when using on own SubmissionEntry (outside submission queue), that would be added to the submission queue using put, be sure its cleared if it's reused for multiple operations.