geopm  3.1.1.dev296+g5916b956
GEOPM - Global Extensible Open Power Manager
Public Member Functions | Static Public Member Functions | List of all members
geopm::IOUring Class Referenceabstract

#include <IOUring.hpp>

Inheritance diagram for geopm::IOUring:
Inheritance graph
[legend]

Public Member Functions

 IOUring ()=default
 Create and initialize an IO uring. More...
 
virtual ~IOUring ()=default
 Clean up the IO uring. More...
 
virtual void submit ()=0
 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. More...
 
virtual void prep_read (std::shared_ptr< int > ret, int fd, void *buf, unsigned nbytes, off_t offset)=0
 Perform a pread in the next batch submission. More...
 
virtual void prep_write (std::shared_ptr< int > ret, int fd, const void *buf, unsigned nbytes, off_t offset)=0
 Perform a pwrite in the next batch submission. More...
 

Static Public Member Functions

static std::unique_ptr< IOUringmake_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. More...
 

Constructor & Destructor Documentation

◆ IOUring()

geopm::IOUring::IOUring ( )
default

Create and initialize an IO uring.

◆ ~IOUring()

virtual geopm::IOUring::~IOUring ( )
virtualdefault

Clean up the IO uring.

Member Function Documentation

◆ make_unique()

std::unique_ptr< IOUring > geopm::IOUring::make_unique ( unsigned  entries)
static

Create an object that supports an io_uring-like interface. The created object uses io_uring if supported, otherwise uses individual read/write operations.

Parameters
entriesMaximum number of queue operations to contain within a single batch submission.

◆ prep_read()

virtual void geopm::IOUring::prep_read ( std::shared_ptr< int >  ret,
int  fd,
void *  buf,
unsigned  nbytes,
off_t  offset 
)
pure virtual

Perform a pread in the next batch submission.

Parameters
retWhere to store the operation's return value, which will be a non-negative number of bytes read, or -errno on failure, after submit() returns.
fdWhich already-opened file to read.
bufWhere to store the read data.
nbytesNumber of bytes to read into buf.
offsetOffset within fd to start the pread. -1 uses the existing offset of fd, like in read().
Exceptions
ifthe queue is already full.

Implemented in geopm::IOUringImp, and geopm::IOUringFallback.

◆ prep_write()

virtual void geopm::IOUring::prep_write ( std::shared_ptr< int >  ret,
int  fd,
const void *  buf,
unsigned  nbytes,
off_t  offset 
)
pure virtual

Perform a pwrite in the next batch submission.

Parameters
retWhere to store the operation's return value, which will be a non-negative number of bytes written, or -errno on failure, after submit() returns.
fdWhich already-opened file to write.
bufWhich data to write to the file.
nbytesNumber of bytes to write from buf.
offsetOffset within fd to start the pwrite. -1 uses the existing offset of fd, like in write().
Exceptions
ifthe queue is already full.

Implemented in geopm::IOUringImp, and geopm::IOUringFallback.

◆ submit()

virtual void geopm::IOUring::submit ( )
pure virtual

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.

Implemented in geopm::IOUringImp, and geopm::IOUringFallback.


The documentation for this class was generated from the following files: