Implementation of the IOUring batch interface. This implementation batches operations inside io_uring submission queues.
More...
#include <IOUringImp.hpp>
|
| | IOUringImp (unsigned entries) |
| |
| virtual | ~IOUringImp () |
| |
| | IOUringImp (const IOUringImp &other)=delete |
| |
| IOUringImp & | operator= (const IOUringImp &other)=delete |
| |
| void | submit () override |
| | Submit all prepared uring operations in a batch, and wait for all operations to return a result. Throws if there are errors interacting with the completion queue. Failures of batched operations are reported by ret from the operation's respective prep_... function call, and do not cause this function to throw.
|
| |
| void | prep_read (std::shared_ptr< int > ret, int fd, void *buf, unsigned nbytes, off_t offset) override |
| | Perform a pread in the next batch submission.
|
| |
| void | prep_write (std::shared_ptr< int > ret, int fd, const void *buf, unsigned nbytes, off_t offset) override |
| | Perform a pwrite in the next batch submission.
|
| |
| | IOUring ()=default |
| | Create and initialize an IO uring.
|
| |
| virtual | ~IOUring ()=default |
| | Clean up the IO uring.
|
| |
|
| static bool | is_supported () |
| | Return whether this implementation of IOUring is supported.
|
| |
| static std::unique_ptr< IOUring > | make_unique (unsigned entries) |
| | Create an IO uring with queues of a given size.
|
| |
| static std::unique_ptr< IOUring > | make_unique (unsigned entries) |
| | Create an object that supports an io_uring-like interface. The created object uses io_uring if supported, otherwise uses individual read/write operations.
|
| |
Implementation of the IOUring batch interface. This implementation batches operations inside io_uring submission queues.
◆ IOUringImp() [1/2]
| geopm::IOUringImp::IOUringImp |
( |
unsigned |
entries | ) |
|
◆ ~IOUringImp()
| geopm::IOUringImp::~IOUringImp |
( |
| ) |
|
|
virtual |
◆ IOUringImp() [2/2]
| geopm::IOUringImp::IOUringImp |
( |
const IOUringImp & |
other | ) |
|
|
delete |
◆ get_sqe_or_throw()
| struct io_uring_sqe * geopm::IOUringImp::get_sqe_or_throw |
( |
| ) |
|
|
protected |
◆ is_supported()
| bool geopm::IOUringImp::is_supported |
( |
| ) |
|
|
static |
Return whether this implementation of IOUring is supported.
◆ make_unique()
| std::unique_ptr< IOUring > geopm::IOUringImp::make_unique |
( |
unsigned |
entries | ) |
|
|
static |
Create an IO uring with queues of a given size.
- Parameters
-
| entries | Maximum number of queue operations to contain within a single batch submission. |
◆ operator=()
◆ prep_read()
| void geopm::IOUringImp::prep_read |
( |
std::shared_ptr< int > |
ret, |
|
|
int |
fd, |
|
|
void * |
buf, |
|
|
unsigned |
nbytes, |
|
|
off_t |
offset |
|
) |
| |
|
overridevirtual |
Perform a pread in the next batch submission.
- Parameters
-
| ret | Where to store the operation's return value, which will be a non-negative number of bytes read, or -errno on failure, after submit() returns. |
| fd | Which already-opened file to read. |
| buf | Where to store the read data. |
| nbytes | Number of bytes to read into buf. |
| offset | Offset within fd to start the pread. -1 uses the existing offset of fd, like in read(). |
- Exceptions
-
| if | the queue is already full. |
Implements geopm::IOUring.
◆ prep_write()
| void geopm::IOUringImp::prep_write |
( |
std::shared_ptr< int > |
ret, |
|
|
int |
fd, |
|
|
const void * |
buf, |
|
|
unsigned |
nbytes, |
|
|
off_t |
offset |
|
) |
| |
|
overridevirtual |
Perform a pwrite in the next batch submission.
- Parameters
-
| ret | Where to store the operation's return value, which will be a non-negative number of bytes written, or -errno on failure, after submit() returns. |
| fd | Which already-opened file to write. |
| buf | Which data to write to the file. |
| nbytes | Number of bytes to write from buf. |
| offset | Offset within fd to start the pwrite. -1 uses the existing offset of fd, like in write(). |
- Exceptions
-
| if | the queue is already full. |
Implements geopm::IOUring.
◆ set_sqe_return_destination()
| void geopm::IOUringImp::set_sqe_return_destination |
( |
struct io_uring_sqe * |
sqe, |
|
|
std::shared_ptr< int > |
destination |
|
) |
| |
|
protected |
◆ submit()
| void geopm::IOUringImp::submit |
( |
| ) |
|
|
overridevirtual |
Submit all prepared uring operations in a batch, and wait for all operations to return a result. Throws if there are errors interacting with the completion queue. Failures of batched operations are reported by ret from the operation's respective prep_... function call, and do not cause this function to throw.
Implements geopm::IOUring.
The documentation for this class was generated from the following files: