MCPcopy Create free account
hub / github.com/axboe/liburing / test

Function test

test/fd-pass.c:53–195  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

51}
52
53static int test(const char *filename, int source_fd, int target_fd,
54 unsigned int ring_flags)
55{
56 struct io_uring sring, dring;
57 struct io_uring_sqe *sqe;
58 struct io_uring_cqe *cqe;
59 int ret;
60
61 ret = io_uring_queue_init(8, &sring, ring_flags);
62 if (ret) {
63 if (ret == -EINVAL)
64 return T_EXIT_SKIP;
65 fprintf(stderr, "ring setup failed: %d\n", ret);
66 return T_EXIT_FAIL;
67 }
68 ret = io_uring_queue_init(8, &dring, 0);
69 if (ret) {
70 fprintf(stderr, "ring setup failed: %d\n", ret);
71 return T_EXIT_FAIL;
72 }
73
74 ret = io_uring_register_files_sparse(&sring, 8);
75 if (ret) {
76 if (ret == -EINVAL)
77 return T_EXIT_SKIP;
78 fprintf(stderr, "register files failed %d\n", ret);
79 return T_EXIT_FAIL;
80 }
81 ret = io_uring_register_files_sparse(&dring, 8);
82 if (ret) {
83 fprintf(stderr, "register files failed %d\n", ret);
84 return T_EXIT_FAIL;
85 }
86 if (target_fd == IORING_FILE_INDEX_ALLOC) {
87 /* we want to test installing into a non-zero slot */
88 ret = io_uring_register_file_alloc_range(&dring, 1, 1);
89 if (ret) {
90 fprintf(stderr, "io_uring_register_file_alloc_range %d\n", ret);
91 return T_EXIT_FAIL;
92 }
93 }
94
95 /* open direct descriptor */
96 sqe = io_uring_get_sqe(&sring);
97 io_uring_prep_openat_direct(sqe, AT_FDCWD, filename, 0, 0644, source_fd);
98 io_uring_submit(&sring);
99 ret = io_uring_wait_cqe(&sring, &cqe);
100 if (ret) {
101 fprintf(stderr, "wait cqe failed %d\n", ret);
102 return T_EXIT_FAIL;
103 }
104 if (cqe->res) {
105 fprintf(stderr, "cqe res %d\n", cqe->res);
106 return T_EXIT_FAIL;
107 }
108 io_uring_cqe_seen(&sring, cqe);
109
110 /* verify data is sane for source ring */

Callers 1

mainFunction · 0.70

Calls 7

io_uring_queue_initFunction · 0.85
io_uring_submitFunction · 0.85
verify_fixed_readFunction · 0.85
io_uring_queue_exitFunction · 0.85
io_uring_get_sqeFunction · 0.50

Tested by

no test coverage detected