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

Function test_clamp

test/read-mshot.c:155–263  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

153}
154
155static int test_clamp(void)
156{
157 struct io_uring_buf_ring *br;
158 struct io_uring_params p = { };
159 struct io_uring_sqe *sqe;
160 struct io_uring_cqe *cqe;
161 struct io_uring ring;
162 int ret, fds[2], i;
163 char tmp[32];
164 char *buf;
165 void *ptr;
166
167 ret = io_uring_queue_init_params(4, &ring, &p);
168 if (ret) {
169 fprintf(stderr, "ring setup failed: %d\n", ret);
170 return 1;
171 }
172
173 if (pipe(fds) < 0) {
174 perror("pipe");
175 return 1;
176 }
177
178 if (posix_memalign((void **) &buf, 4096, NR_BUFS * BUF_SIZE))
179 return 1;
180
181 br = io_uring_setup_buf_ring(&ring, NR_BUFS, BUF_BGID, 0, &ret);
182 if (!br) {
183 if (ret == -EINVAL) {
184 no_buf_ring = 1;
185 return 0;
186 }
187 fprintf(stderr, "Buffer ring register failed %d\n", ret);
188 return 1;
189 }
190
191 ptr = buf;
192 io_uring_buf_ring_add(br, buf, 16, 1, BR_MASK, 0);
193 buf += 16;
194 io_uring_buf_ring_add(br, buf, 32, 2, BR_MASK, 1);
195 buf += 32;
196 io_uring_buf_ring_add(br, buf, 32, 3, BR_MASK, 2);
197 buf += 32;
198 io_uring_buf_ring_add(br, buf, 32, 4, BR_MASK, 3);
199 buf += 32;
200 io_uring_buf_ring_advance(br, 4);
201
202 memset(tmp, 0xaa, sizeof(tmp));
203
204 sqe = io_uring_get_sqe(&ring);
205 io_uring_prep_read_multishot(sqe, fds[0], 0, 0, BUF_BGID);
206
207 ret = io_uring_submit(&ring);
208 if (ret != 1) {
209 fprintf(stderr, "submit: %d\n", ret);
210 return 1;
211 }
212

Callers 1

mainFunction · 0.85

Calls 6

io_uring_setup_buf_ringFunction · 0.85
io_uring_submitFunction · 0.85
io_uring_free_buf_ringFunction · 0.85
io_uring_queue_exitFunction · 0.85
io_uring_get_sqeFunction · 0.50

Tested by

no test coverage detected