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

Function main

test/buf-ring-nommap.c:20–130  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18static int bid = 89;
19
20int main(int argc, char *argv[])
21{
22 struct io_uring_buf_ring *br;
23 struct io_uring_sqe *sqe;
24 struct io_uring_cqe *cqe;
25 struct io_uring ring;
26 size_t ring_size;
27 int ret, ring_mask, fds[2];
28 struct io_uring_buf_reg reg = {
29 .ring_entries = 1,
30 .bgid = bgid,
31 .flags = IOU_PBUF_RING_MMAP,
32 };
33 struct io_uring_params p = { };
34 void *ring_mem;
35 char buf[32];
36 off_t off;
37
38 if (argc > 1)
39 return T_EXIT_SKIP;
40
41 if (posix_memalign(&ring_mem, 16384, 16384))
42 return T_EXIT_FAIL;
43
44 memset(ring_mem, 0, 16384);
45
46 p.flags = IORING_SETUP_NO_MMAP;
47 ret = io_uring_queue_init_mem(1, &ring, &p, ring_mem, 16384);
48 if (ret < 0) {
49 if (ret == -EINVAL || ret == -ENOMEM) {
50 free(ring_mem);
51 return T_EXIT_SKIP;
52 }
53 fprintf(stderr, "queue init failed %d\n", ret);
54 return T_EXIT_FAIL;
55 }
56
57 if (pipe(fds) < 0) {
58 perror("pipe");
59 return T_EXIT_FAIL;
60 }
61
62 ring_size = sizeof(struct io_uring_buf);
63 ring_mask = io_uring_buf_ring_mask(1);
64
65 ret = io_uring_register_buf_ring(&ring, &reg, 0);
66 if (ret) {
67 if (ret == -EINVAL) {
68 free(ring_mem);
69 return T_EXIT_SKIP;
70 }
71 fprintf(stderr, "reg buf ring: %d\n", ret);
72 return T_EXIT_FAIL;
73 }
74
75 off = IORING_OFF_PBUF_RING |
76 (unsigned long long) bgid << IORING_OFF_PBUF_SHIFT;
77 br = mmap(NULL, ring_size, PROT_READ | PROT_WRITE,

Callers

nothing calls this directly

Calls 5

io_uring_queue_init_memFunction · 0.85
io_uring_submitFunction · 0.85
io_uring_queue_exitFunction · 0.85
io_uring_get_sqeFunction · 0.50

Tested by

no test coverage detected