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

Function test_full_page_reg

test/buf-ring.c:209–255  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

207}
208
209static int test_full_page_reg(int bgid)
210{
211#if defined(__hppa__)
212 return T_EXIT_SKIP;
213#else
214 struct io_uring ring;
215 int ret;
216 void *ptr;
217 struct io_uring_buf_reg reg = { };
218 int entries = pagesize / sizeof(struct io_uring_buf);
219
220 ret = io_uring_queue_init(1, &ring, 0);
221 if (ret) {
222 fprintf(stderr, "queue init failed %d\n", ret);
223 return T_EXIT_FAIL;
224 }
225
226 ret = posix_memalign(&ptr, pagesize, pagesize * 2);
227 if (ret) {
228 fprintf(stderr, "posix_memalign failed %d\n", ret);
229 goto err;
230 }
231
232 ret = mprotect(ptr + pagesize, pagesize, PROT_NONE);
233 if (ret) {
234 fprintf(stderr, "mprotect failed %d\n", errno);
235 goto err1;
236 }
237
238 reg.ring_addr = (unsigned long) ptr;
239 reg.ring_entries = entries;
240 reg.bgid = bgid;
241
242 ret = io_uring_register_buf_ring(&ring, &reg, 0);
243 if (ret)
244 fprintf(stderr, "register buf ring failed %d\n", ret);
245
246 if (mprotect(ptr + pagesize, pagesize, PROT_READ | PROT_WRITE))
247 fprintf(stderr, "reverting mprotect failed %d\n", errno);
248
249err1:
250 free(ptr);
251err:
252 io_uring_queue_exit(&ring);
253 return ret ? T_EXIT_FAIL : T_EXIT_PASS;
254#endif
255}
256
257static int test_one_read(int fd, int bgid, struct io_uring *ring)
258{

Callers 1

mainFunction · 0.85

Calls 3

io_uring_queue_initFunction · 0.85
io_uring_queue_exitFunction · 0.85

Tested by

no test coverage detected