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

Function test_max

test/ringbuf-status.c:26–78  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24static int no_buf_ring_status;
25
26static int test_max(void)
27{
28 struct io_uring_buf_ring *br;
29 struct io_uring ring;
30 int nr_bufs = 32768;
31 int ret, i;
32 char *buf;
33
34 ret = io_uring_queue_init(1, &ring, 0);
35 if (ret) {
36 fprintf(stderr, "ring setup failed: %d\n", ret);
37 return 1;
38 }
39
40 if (posix_memalign((void **) &buf, 4096, FSIZE))
41 return 1;
42
43 br = io_uring_setup_buf_ring(&ring, nr_bufs, BGID, 0, &ret);
44 if (!br) {
45 fprintf(stderr, "Buffer ring register failed %d\n", ret);
46 return 1;
47 }
48
49 ret = io_uring_buf_ring_available(&ring, br, BGID);
50 if (ret) {
51 fprintf(stderr, "Bad available count %d\n", ret);
52 return 1;
53 }
54
55 for (i = 0; i < nr_bufs / 2; i++)
56 io_uring_buf_ring_add(br, buf, BUF_SIZE, i + 1, nr_bufs - 1, i);
57 io_uring_buf_ring_advance(br, nr_bufs / 2);
58
59 ret = io_uring_buf_ring_available(&ring, br, BGID);
60 if (ret != nr_bufs / 2) {
61 fprintf(stderr, "Bad half full available count %d\n", ret);
62 return 1;
63 }
64
65 for (i = 0; i < nr_bufs / 2; i++)
66 io_uring_buf_ring_add(br, buf, BUF_SIZE, i + 1, nr_bufs - 1, i);
67 io_uring_buf_ring_advance(br, nr_bufs / 2);
68
69 ret = io_uring_buf_ring_available(&ring, br, BGID);
70 if (ret != nr_bufs) {
71 fprintf(stderr, "Bad half full available count %d\n", ret);
72 return 1;
73 }
74
75 free(buf);
76 io_uring_queue_exit(&ring);
77 return T_EXIT_PASS;
78}
79
80static int test(int invalid)
81{

Callers 1

mainFunction · 0.85

Calls 3

io_uring_queue_initFunction · 0.85
io_uring_setup_buf_ringFunction · 0.85
io_uring_queue_exitFunction · 0.85

Tested by

no test coverage detected