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

Function test_wait_arg

test/reg-wait.c:198–263  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

196}
197
198static int test_wait_arg(void)
199{
200 struct io_uring_region_desc rd = {};
201 struct io_uring_mem_region_reg mr = {};
202 struct io_uring ring;
203 void *buffer;
204 int ret;
205
206 ret = io_uring_queue_init(8, &ring, IORING_SETUP_R_DISABLED);
207 if (ret) {
208 if (ret == -EINVAL) {
209 printf("IORING_SETUP_R_DISABLED not supported, skip\n");
210 return 0;
211 }
212 fprintf(stderr, "ring setup failed: %d\n", ret);
213 return T_EXIT_FAIL;
214 }
215
216 buffer = t_aligned_alloc(page_size, page_size * 4);
217 if (!buffer) {
218 fprintf(stderr, "allocation failed\n");
219 return T_EXIT_FAIL;
220 }
221
222 rd.user_addr = uring_ptr_to_u64(buffer);
223 rd.size = page_size;
224 rd.flags = IORING_MEM_REGION_TYPE_USER;
225 mr.region_uptr = uring_ptr_to_u64(&rd);
226 mr.flags = IORING_MEM_REGION_REG_WAIT_ARG;
227
228 ret = io_uring_register_region(&ring, &mr);
229 if (ret) {
230 fprintf(stderr, "region reg failed %i\n", ret);
231 return 1;
232 }
233
234 ret = io_uring_enable_rings(&ring);
235 if (ret) {
236 fprintf(stderr, "io_uring_enable_rings failure %i\n", ret);
237 return T_EXIT_FAIL;
238 }
239
240 reg = buffer;
241
242 ret = test_basic(&ring);
243 if (ret == T_EXIT_FAIL) {
244 fprintf(stderr, "test failed\n");
245 goto err;
246 }
247
248 ret = test_invalid_sig(&ring);
249 if (ret == T_EXIT_FAIL) {
250 fprintf(stderr, "test_invalid sig failed\n");
251 goto err;
252 }
253
254 ret = test_offsets(&ring, buffer, page_size, true);
255 if (ret == T_EXIT_FAIL) {

Callers 1

mainFunction · 0.85

Calls 8

io_uring_queue_initFunction · 0.85
io_uring_register_regionFunction · 0.85
io_uring_enable_ringsFunction · 0.85
test_invalid_sigFunction · 0.85
io_uring_queue_exitFunction · 0.85
t_aligned_allocFunction · 0.70
test_basicFunction · 0.70
test_offsetsFunction · 0.70

Tested by

no test coverage detected