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

Function main

test/buf-ring-put.c:22–83  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20#define ENTRIES 512
21
22int main(int argc, char *argv[])
23{
24 struct io_uring_buf_ring *br[BGID_NR];
25 struct io_uring ring;
26 size_t ring_size;
27 int ret, i, j;
28
29 if (argc > 1)
30 return T_EXIT_SKIP;
31
32 ret = io_uring_queue_init(1, &ring, 0);
33 if (ret) {
34 fprintf(stderr, "queue init failed %d\n", ret);
35 return T_EXIT_FAIL;
36 }
37
38 ring_size = ENTRIES * sizeof(struct io_uring_buf);
39
40 for (i = 0; i < BGID_NR; i++) {
41 int bgid = BGID_START + i;
42 struct io_uring_buf_reg reg = {
43 .ring_entries = ENTRIES,
44 .bgid = bgid,
45 .flags = IOU_PBUF_RING_MMAP,
46 };
47 off_t off;
48
49 ret = io_uring_register_buf_ring(&ring, &reg, 0);
50 if (ret) {
51 if (ret == -EINVAL)
52 return T_EXIT_SKIP;
53 fprintf(stderr, "reg buf ring: %d\n", ret);
54 return T_EXIT_FAIL;
55 }
56
57 off = IORING_OFF_PBUF_RING |
58 (unsigned long long) bgid << IORING_OFF_PBUF_SHIFT;
59 br[i] = mmap(NULL, ring_size, PROT_READ | PROT_WRITE,
60 MAP_SHARED | MAP_POPULATE, ring.ring_fd, off);
61 if (br[i] == MAP_FAILED) {
62 perror("mmap");
63 return T_EXIT_FAIL;
64 }
65 }
66
67 for (i = 0; i < BGID_NR; i++) {
68 ret = io_uring_unregister_buf_ring(&ring, BGID_START + i);
69 if (ret) {
70 fprintf(stderr, "reg buf ring: %d\n", ret);
71 return T_EXIT_FAIL;
72 }
73 }
74
75 for (j = 0; j < 1000; j++) {
76 for (i = 0; i < BGID_NR; i++)
77 memset(br[i], 0x5a, ring_size);
78 usleep(1000);
79 }

Callers

nothing calls this directly

Calls 4

io_uring_queue_initFunction · 0.85
io_uring_queue_exitFunction · 0.85

Tested by

no test coverage detected