* use functions exposed by liburing instead of using syscalls
* v0.7 is the latest release at the time of writing, as liburing is under
active development. it'd be better to use a newer release.
* also use https://git.kernel.dk/liburing instead of
http://git.kernel.dk/liburing.
Signed-off-by: Kefu Chai <kchai@redhat.com>
include(ExternalProject)
ExternalProject_Add(liburing_ext
- GIT_REPOSITORY http://git.kernel.dk/liburing
- GIT_TAG "4e360f71131918c36774f51688e5c65dea8d43f2"
+ GIT_REPOSITORY https://git.kernel.dk/liburing
+ GIT_TAG "liburing-0.7"
SOURCE_DIR ${CMAKE_BINARY_DIR}/src/liburing
CONFIGURE_COMMAND <SOURCE_DIR>/configure
BUILD_COMMAND env CC=${CMAKE_C_COMPILER} ${make_cmd} -C src -s
if (ret < 0)
return ret;
- ret = io_uring_register(d->io_uring.ring_fd, IORING_REGISTER_FILES,
+ ret = io_uring_register_files(&d->io_uring,
&fds[0], fds.size());
if (ret < 0) {
ret = -errno;
bool ioring_queue_t::supported()
{
- struct io_uring_params p;
-
- memset(&p, 0, sizeof(p));
- int fd = io_uring_setup(16, &p);
- if (fd < 0)
+ struct io_uring ring;
+ int ret = io_uring_queue_init(16, &ring, 0);
+ if (ret) {
return false;
-
- close(fd);
-
+ }
+ io_uring_queue_exit(&ring);
return true;
}