io/uring/Ring: add SubmitAndGetEvents()

This commit is contained in:
Max Kellermann 2025-01-20 17:32:13 +01:00 committed by Max Kellermann
parent 2e3a51a5da
commit ed819a05e3
3 changed files with 21 additions and 0 deletions

@ -49,6 +49,10 @@ protected:
void AddPending(struct io_uring_sqe &sqe,
Operation &operation) noexcept;
void SubmitAndGetEvents() {
ring.SubmitAndGetEvents();
}
public:
void Push(struct io_uring_sqe &sqe,
Operation &operation) noexcept {

@ -22,6 +22,14 @@ Ring::Submit()
throw MakeErrno(-error, "io_uring_submit() failed");
}
void
Ring::SubmitAndGetEvents()
{
int error = io_uring_submit_and_get_events(&ring);
if (error < 0)
throw MakeErrno(-error, "io_uring_submit() failed");
}
struct io_uring_cqe *
Ring::WaitCompletion()
{

@ -53,9 +53,18 @@ public:
* kernel using io_uring_submit().
*
* Throws on error.
*
* @see io_uring_submit()
*/
void Submit();
/**
* Like Submit(), but also flush completions.
*
* @see io_uring_submit_and_get_events()
*/
void SubmitAndGetEvents();
/**
* Waits for one completion.
*