| 64 | } |
| 65 | |
| 66 | static void queue_rw_pair(struct io_uring *ring, off_t size, off_t offset) |
| 67 | { |
| 68 | struct io_uring_sqe *sqe; |
| 69 | struct io_data *data; |
| 70 | |
| 71 | data = malloc(size + sizeof(*data)); |
| 72 | data->index = 0; |
| 73 | data->offset = offset; |
| 74 | data->iov.iov_base = data + 1; |
| 75 | data->iov.iov_len = size; |
| 76 | |
| 77 | sqe = io_uring_get_sqe(ring); |
| 78 | io_uring_prep_readv(sqe, infd, &data->iov, 1, offset); |
| 79 | sqe->flags |= IOSQE_IO_LINK; |
| 80 | io_uring_sqe_set_data(sqe, data); |
| 81 | |
| 82 | sqe = io_uring_get_sqe(ring); |
| 83 | io_uring_prep_writev(sqe, outfd, &data->iov, 1, offset); |
| 84 | io_uring_sqe_set_data(sqe, data); |
| 85 | } |
| 86 | |
| 87 | static int handle_cqe(struct io_uring *ring, struct io_uring_cqe *cqe) |
| 88 | { |
no test coverage detected