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

Function test_pipe_io_fixed

test/stdout.c:15–96  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13#include "liburing.h"
14
15static int test_pipe_io_fixed(struct io_uring *ring)
16{
17 const char str[] = "This is a fixed pipe test\n";
18 struct io_uring_cqe *cqe;
19 struct io_uring_sqe *sqe;
20 struct iovec vecs[2];
21 char buffer[128];
22 int i, ret, fds[2];
23
24 t_posix_memalign(&vecs[0].iov_base, 4096, 4096);
25 memcpy(vecs[0].iov_base, str, strlen(str));
26 vecs[0].iov_len = strlen(str);
27
28 if (pipe(fds) < 0) {
29 perror("pipe");
30 return 1;
31 }
32
33 ret = io_uring_register_buffers(ring, vecs, 1);
34 if (ret) {
35 fprintf(stderr, "Failed to register buffers: %d\n", ret);
36 return 1;
37 }
38
39 sqe = io_uring_get_sqe(ring);
40 if (!sqe) {
41 fprintf(stderr, "get sqe failed\n");
42 goto err;
43 }
44 io_uring_prep_write_fixed(sqe, fds[1], vecs[0].iov_base,
45 vecs[0].iov_len, 0, 0);
46 sqe->user_data = 1;
47
48 sqe = io_uring_get_sqe(ring);
49 if (!sqe) {
50 fprintf(stderr, "get sqe failed\n");
51 goto err;
52 }
53 vecs[1].iov_base = buffer;
54 vecs[1].iov_len = sizeof(buffer);
55 io_uring_prep_readv(sqe, fds[0], &vecs[1], 1, 0);
56 sqe->user_data = 2;
57
58 ret = io_uring_submit(ring);
59 if (ret < 0) {
60 fprintf(stderr, "sqe submit failed: %d\n", ret);
61 goto err;
62 } else if (ret != 2) {
63 fprintf(stderr, "Submitted only %d\n", ret);
64 goto err;
65 }
66
67 for (i = 0; i < 2; i++) {
68 ret = io_uring_wait_cqe(ring, &cqe);
69 if (ret < 0) {
70 fprintf(stderr, "wait completion %d\n", ret);
71 goto err;
72 }

Callers 1

mainFunction · 0.85

Calls 5

t_posix_memalignFunction · 0.85
io_uring_submitFunction · 0.85
io_uring_get_sqeFunction · 0.50

Tested by

no test coverage detected