geopm  3.1.1.dev272+gdfb40a8d
GEOPM - Global Extensible Open Power Manager
Public Member Functions | Static Public Member Functions | List of all members
geopm::IOUringFallback Class Referencefinal

Fallback implementation of the IOUring batch interface. This implementation uses queues of individual read/write operations instead of a single batched operation. More...

#include <IOUringFallback.hpp>

Inheritance diagram for geopm::IOUringFallback:
Inheritance graph
[legend]
Collaboration diagram for geopm::IOUringFallback:
Collaboration graph
[legend]

Public Member Functions

 IOUringFallback (unsigned entries)
 
virtual ~IOUringFallback ()
 
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. More...
 
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. More...
 
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. More...
 
- Public Member Functions inherited from geopm::IOUring
 IOUring ()=default
 Create and initialize an IO uring. More...
 
virtual ~IOUring ()=default
 Clean up the IO uring. More...
 

Static Public Member Functions

static std::unique_ptr< IOUringmake_unique (unsigned entries)
 Create a fallback implementation of IOUring that uses non-batched IO operations, in case we cannot use IO uring or liburing. More...
 
- Static Public Member Functions inherited from geopm::IOUring
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...
 

Detailed Description

Fallback implementation of the IOUring batch interface. This implementation uses queues of individual read/write operations instead of a single batched operation.

Constructor & Destructor Documentation

◆ IOUringFallback()

geopm::IOUringFallback::IOUringFallback ( unsigned  entries)

◆ ~IOUringFallback()

geopm::IOUringFallback::~IOUringFallback ( )
virtual

Member Function Documentation

◆ make_unique()

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

Create a fallback implementation of IOUring that uses non-batched IO operations, in case we cannot use IO uring or liburing.

Parameters
entriesThe expected maximum number of batched operations.

◆ prep_read()

void geopm::IOUringFallback::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
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.

Implements geopm::IOUring.

◆ prep_write()

void geopm::IOUringFallback::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
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.

Implements geopm::IOUring.

◆ submit()

void geopm::IOUringFallback::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: