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

Function test

test/regbuf-clone.c:314–478  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

312}
313
314static int test(int reg_src, int reg_dst)
315{
316 struct iovec vecs[NR_VECS];
317 struct io_uring src, dst;
318 int ret, i;
319
320 ret = io_uring_queue_init(1, &src, 0);
321 if (ret) {
322 fprintf(stderr, "ring_init: %d\n", ret);
323 return T_EXIT_FAIL;
324 }
325 ret = io_uring_queue_init(1, &dst, 0);
326 if (ret) {
327 fprintf(stderr, "ring_init: %d\n", ret);
328 return T_EXIT_FAIL;
329 }
330 if (reg_src) {
331 ret = io_uring_register_ring_fd(&src);
332 if (ret < 0) {
333 if (ret == -EINVAL)
334 return T_EXIT_SKIP;
335 fprintf(stderr, "register ring: %d\n", ret);
336 return T_EXIT_FAIL;
337 }
338 }
339 if (reg_dst) {
340 ret = io_uring_register_ring_fd(&dst);
341 if (ret < 0) {
342 if (ret == -EINVAL)
343 return T_EXIT_SKIP;
344 fprintf(stderr, "register ring: %d\n", ret);
345 return T_EXIT_FAIL;
346 }
347 }
348
349 /* test fail with no buffers in src */
350 ret = io_uring_clone_buffers(&dst, &src);
351 if (ret == -EINVAL) {
352 /* no buffer copy support */
353 no_buf_clone = true;
354 return T_EXIT_SKIP;
355 } else if (ret != -ENXIO) {
356 fprintf(stderr, "empty copy: %d\n", ret);
357 return T_EXIT_FAIL;
358 }
359
360 for (i = 0; i < NR_VECS; i++) {
361 if (posix_memalign(&vecs[i].iov_base, 4096, BUF_SIZE))
362 return T_EXIT_FAIL;
363 vecs[i].iov_len = BUF_SIZE;
364 }
365
366 ret = io_uring_register_buffers(&src, vecs, NR_VECS);
367 if (ret < 0) {
368 if (ret == -ENOMEM)
369 return T_EXIT_SKIP;
370 return T_EXIT_FAIL;
371 }

Callers 1

mainFunction · 0.70

Calls 7

io_uring_queue_initFunction · 0.85
use_bufFunction · 0.85
io_uring_queue_exitFunction · 0.85
io_uring_clone_buffersFunction · 0.50

Tested by

no test coverage detected