aboutsummaryrefslogtreecommitdiff
path: root/test/eventfd-reg.c
diff options
context:
space:
mode:
authorGil Cukierman <cukie@google.com>2022-10-31 14:08:03 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-10-31 14:08:03 +0000
commitdae12c7b40c255ad7c6612591e2908a266f2cfd5 (patch)
treeebe9c872e416346e4b333e5062da32401c8e0a73 /test/eventfd-reg.c
parentd53db6851ea17b2d219d084e1afc683b8b62b105 (diff)
parentd0a2042580f3ed180db5e2b53029296a8b555115 (diff)
downloadliburing-dae12c7b40c255ad7c6612591e2908a266f2cfd5.tar.gz
Update liburing to version 2.2 am: d0a2042580main-16k-with-phones
Original change: https://android-review.googlesource.com/c/platform/external/liburing/+/2276974 Change-Id: I0ac5dbb2b0dadb76713528e6ab0110ec071bad63 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'test/eventfd-reg.c')
-rw-r--r--test/eventfd-reg.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/test/eventfd-reg.c b/test/eventfd-reg.c
new file mode 100644
index 0000000..b447455
--- /dev/null
+++ b/test/eventfd-reg.c
@@ -0,0 +1,76 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Description: test eventfd registration+unregistration
+ *
+ */
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <poll.h>
+#include <sys/eventfd.h>
+
+#include "liburing.h"
+
+int main(int argc, char *argv[])
+{
+ struct io_uring_params p = {};
+ struct io_uring ring;
+ int ret, evfd[2], i;
+
+ if (argc > 1)
+ return 0;
+
+ ret = io_uring_queue_init_params(8, &ring, &p);
+ if (ret) {
+ fprintf(stderr, "ring setup failed: %d\n", ret);
+ return 1;
+ }
+
+ evfd[0] = eventfd(0, EFD_CLOEXEC);
+ evfd[1] = eventfd(0, EFD_CLOEXEC);
+ if (evfd[0] < 0 || evfd[1] < 0) {
+ perror("eventfd");
+ return 1;
+ }
+
+ ret = io_uring_register_eventfd(&ring, evfd[0]);
+ if (ret) {
+ fprintf(stderr, "failed to register evfd: %d\n", ret);
+ return 1;
+ }
+
+ /* Check that registrering again will get -EBUSY */
+ ret = io_uring_register_eventfd(&ring, evfd[1]);
+ if (ret != -EBUSY) {
+ fprintf(stderr, "unexpected 2nd register: %d\n", ret);
+ return 1;
+ }
+ close(evfd[1]);
+
+ ret = io_uring_unregister_eventfd(&ring);
+ if (ret) {
+ fprintf(stderr, "unexpected unregister: %d\n", ret);
+ return 1;
+ }
+
+ /* loop 100 registers/unregister */
+ for (i = 0; i < 100; i++) {
+ ret = io_uring_register_eventfd(&ring, evfd[0]);
+ if (ret) {
+ fprintf(stderr, "failed to register evfd: %d\n", ret);
+ return 1;
+ }
+
+ ret = io_uring_unregister_eventfd(&ring);
+ if (ret) {
+ fprintf(stderr, "unexpected unregister: %d\n", ret);
+ return 1;
+ }
+ }
+
+ close(evfd[0]);
+ return 0;
+}