Add functions to query submission queue capacity am: 301d17205a
Original change: https://android-review.googlesource.com/c/platform/system/update_engine/+/2308914
Change-Id: I4826140bccd0130b647c746eab45e2a50769b332
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/liburing_cpp/include/liburing_cpp/IoUring.h b/liburing_cpp/include/liburing_cpp/IoUring.h
index 324fb10..09ed5cc 100644
--- a/liburing_cpp/include/liburing_cpp/IoUring.h
+++ b/liburing_cpp/include/liburing_cpp/IoUring.h
@@ -62,6 +62,13 @@
virtual IoUringSQE PrepWrite(int fd, const void *buf, unsigned nbytes,
uint64_t offset) = 0;
+ // Return number of SQEs available in the queue. If this is 0, subsequent
+ // calls to Prep*() functions will fail.
+ virtual size_t SQELeft() const = 0;
+ // Return number of SQEs currently in the queue. SQEs already submitted would
+ // not be counted.
+ virtual size_t SQEReady() const = 0;
+
// Ring operations
virtual IoUringSubmitResult Submit() = 0;
// Submit and block until |completions| number of CQEs are available
diff --git a/liburing_cpp/src/IoUring.cpp b/liburing_cpp/src/IoUring.cpp
index a5fe76f..f561d25 100644
--- a/liburing_cpp/src/IoUring.cpp
+++ b/liburing_cpp/src/IoUring.cpp
@@ -100,6 +100,10 @@
io_uring_prep_write(sqe, fd, buf, nbytes, offset);
return IoUringSQE{static_cast<void*>(sqe)};
}
+
+ size_t SQELeft() const override { return io_uring_sq_space_left(&ring); }
+ size_t SQEReady() const override { return io_uring_sq_ready(&ring); }
+
IoUringSubmitResult Submit() override {
return IoUringSubmitResult{io_uring_submit(&ring)};
}