| 493 | } |
| 494 | |
| 495 | static int provide_buffers_iovec(struct io_uring *ring, int bgid) |
| 496 | { |
| 497 | struct io_uring_sqe *sqe; |
| 498 | struct io_uring_cqe *cqe; |
| 499 | int i, ret; |
| 500 | |
| 501 | for (i = 0; i < BUFFERS; i++) { |
| 502 | sqe = io_uring_get_sqe(ring); |
| 503 | io_uring_prep_provide_buffers(sqe, vecs[i].iov_base, |
| 504 | vecs[i].iov_len, 1, bgid, i); |
| 505 | } |
| 506 | |
| 507 | ret = io_uring_submit(ring); |
| 508 | if (ret != BUFFERS) { |
| 509 | fprintf(stderr, "submit: %d\n", ret); |
| 510 | return -1; |
| 511 | } |
| 512 | |
| 513 | for (i = 0; i < BUFFERS; i++) { |
| 514 | ret = io_uring_wait_cqe(ring, &cqe); |
| 515 | if (ret) { |
| 516 | fprintf(stderr, "wait_cqe=%d\n", ret); |
| 517 | return 1; |
| 518 | } |
| 519 | if (cqe->res < 0) { |
| 520 | fprintf(stderr, "cqe->res=%d\n", cqe->res); |
| 521 | return 1; |
| 522 | } |
| 523 | io_uring_cqe_seen(ring, cqe); |
| 524 | } |
| 525 | |
| 526 | return 0; |
| 527 | } |
| 528 | |
| 529 | static int test_buf_select_pipe(void) |
| 530 | { |