Sha256: 3df982b3876f19dc8f6f52a45f8693314db9a4f02df4b49c20350602f24378ae
Contents?: true
Size: 1.31 KB
Versions: 2
Compression:
Stored size: 1.31 KB
Contents
/* SPDX-License-Identifier: MIT */ /* * Description: Test O_NONBLOCK reading from fifo, should result in proper * retry and a positive read results. Buggy result would be * -EAGAIN being returned to the user. */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include "liburing.h" #include "helpers.h" int main(int argc, char *argv[]) { struct io_uring_sqe *sqe; struct io_uring_cqe *cqe; struct io_uring ring; char buf[32]; int fds[2]; int flags; int ret; io_uring_queue_init(1, &ring, 0); if (pipe(fds) < 0) { perror("pipe"); return T_EXIT_FAIL; } flags = fcntl(fds[0], F_GETFL, 0); if (flags < 0) { perror("fcntl get"); return T_EXIT_FAIL; } flags |= O_NONBLOCK; ret = fcntl(fds[0], F_SETFL, flags); if (ret < 0) { perror("fcntl set"); return T_EXIT_FAIL; } sqe = io_uring_get_sqe(&ring); io_uring_prep_read(sqe, fds[0], buf, sizeof(buf), 0); io_uring_submit(&ring); usleep(10000); ret = write(fds[1], "Hello\n", 6); if (ret < 0) { perror("pipe write"); return T_EXIT_FAIL; } ret = io_uring_wait_cqe(&ring, &cqe); if (ret < 0) { fprintf(stderr, "wait=%d\n", ret); return T_EXIT_FAIL; } if (cqe->res < 0) { fprintf(stderr, "cqe res %d\n", cqe->res); return T_EXIT_FAIL; } io_uring_cqe_seen(&ring, cqe); io_uring_queue_exit(&ring); return T_EXIT_PASS; }
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
uringmachine-0.5.1 | vendor/liburing/test/fifo-nonblock-read.c |
uringmachine-0.5 | vendor/liburing/test/fifo-nonblock-read.c |