1 /* SPDX-License-Identifier: MIT */
2 /*
3 * Description: run various nop tests
4 *
5 */
6 #include <errno.h>
7 #include <stdio.h>
8 #include <unistd.h>
9 #include <stdlib.h>
10 #include <string.h>
11 #include <fcntl.h>
12 #include <poll.h>
13 #include <sys/eventfd.h>
14
15 #include "liburing.h"
16
main(int argc,char * argv[])17 int main(int argc, char *argv[])
18 {
19 struct io_uring_params p = {};
20 struct io_uring ring1, ring2;
21 struct io_uring_sqe *sqe;
22 int ret, evfd1, evfd2;
23
24 if (argc > 1)
25 return 0;
26
27 ret = io_uring_queue_init_params(8, &ring1, &p);
28 if (ret) {
29 fprintf(stderr, "ring setup failed: %d\n", ret);
30 return 1;
31 }
32 if (!(p.features & IORING_FEAT_CUR_PERSONALITY)) {
33 fprintf(stdout, "Skipping\n");
34 return 0;
35 }
36 ret = io_uring_queue_init(8, &ring2, 0);
37 if (ret) {
38 fprintf(stderr, "ring setup failed: %d\n", ret);
39 return 1;
40 }
41
42 evfd1 = eventfd(0, EFD_CLOEXEC);
43 if (evfd1 < 0) {
44 perror("eventfd");
45 return 1;
46 }
47
48 evfd2 = eventfd(0, EFD_CLOEXEC);
49 if (evfd2 < 0) {
50 perror("eventfd");
51 return 1;
52 }
53
54 ret = io_uring_register_eventfd(&ring1, evfd1);
55 if (ret) {
56 fprintf(stderr, "failed to register evfd: %d\n", ret);
57 return 1;
58 }
59
60 ret = io_uring_register_eventfd(&ring2, evfd2);
61 if (ret) {
62 fprintf(stderr, "failed to register evfd: %d\n", ret);
63 return 1;
64 }
65
66 sqe = io_uring_get_sqe(&ring1);
67 io_uring_prep_poll_add(sqe, evfd2, POLLIN);
68 sqe->user_data = 1;
69
70 sqe = io_uring_get_sqe(&ring2);
71 io_uring_prep_poll_add(sqe, evfd1, POLLIN);
72 sqe->user_data = 1;
73
74 ret = io_uring_submit(&ring1);
75 if (ret != 1) {
76 fprintf(stderr, "submit: %d\n", ret);
77 return 1;
78 }
79
80 ret = io_uring_submit(&ring2);
81 if (ret != 1) {
82 fprintf(stderr, "submit: %d\n", ret);
83 return 1;
84 }
85
86 sqe = io_uring_get_sqe(&ring1);
87 io_uring_prep_nop(sqe);
88 sqe->user_data = 3;
89
90 ret = io_uring_submit(&ring1);
91 if (ret != 1) {
92 fprintf(stderr, "submit: %d\n", ret);
93 return 1;
94 }
95
96 return 0;
97 }
98