diff --git a/man/io_uring_sqe_set_buf_group.3 b/man/io_uring_sqe_set_buf_group.3 new file mode 100644 index 000000000..5299051d0 --- /dev/null +++ b/man/io_uring_sqe_set_buf_group.3 @@ -0,0 +1,32 @@ +.\" Copyright (C) 2024 Christian Mazakas +.\" +.\" SPDX-License-Identifier: LGPL-2.0-or-later +.\" +.TH io_uring_sqe_set_buf_group 3 "December 9, 2024" "liburing-2.9" "liburing Manual" +.SH NAME +io_uring_sqe_set_buf_group \- set buf group for submission queue event +.SH SYNOPSIS +.nf +.B #include +.PP +.BI "void io_uring_sqe_set_buf_group(struct io_uring_sqe *" sqe "," +.BI " int " bgid ");" +.fi +.SH DESCRIPTION +.PP +The +.BR io_uring_sqe_set_buf_group (3) +function sets the associated buf_group of the +.I sqe +to +.IR bgid . + +After the caller has requested a submission queue entry (SQE) with +.BR io_uring_get_sqe (3) , +they can associate a buf_group with the SQE used for multishot operations. + +.SH RETURN VALUE +None +.SH SEE ALSO +.BR io_uring_get_sqe (3), +.BR io_uring_cqe_set_data (3) diff --git a/src/include/liburing.h b/src/include/liburing.h index 627fc47cc..49b4edf43 100644 --- a/src/include/liburing.h +++ b/src/include/liburing.h @@ -409,6 +409,12 @@ IOURINGINLINE void io_uring_sqe_set_flags(struct io_uring_sqe *sqe, sqe->flags = (__u8) flags; } +IOURINGINLINE void io_uring_sqe_set_buf_group(struct io_uring_sqe *sqe, + int bgid) +{ + sqe->buf_group = (__u16) bgid; +} + IOURINGINLINE void __io_uring_set_target_fixed_file(struct io_uring_sqe *sqe, unsigned int file_index) { diff --git a/src/liburing-ffi.map b/src/liburing-ffi.map index 9af1fb935..83593a338 100644 --- a/src/liburing-ffi.map +++ b/src/liburing-ffi.map @@ -223,4 +223,5 @@ LIBURING_2.9 { io_uring_submit_and_wait_reg; io_uring_clone_buffers_offset; io_uring_register_region; + io_uring_sqe_set_buf_group; } LIBURING_2.8; diff --git a/test/recv-multishot.c b/test/recv-multishot.c index 39983e8d7..af98a2c10 100644 --- a/test/recv-multishot.c +++ b/test/recv-multishot.c @@ -165,7 +165,7 @@ static int test(struct args *args) io_uring_prep_recv_multishot(sqe, fds[0], NULL, 0, 0); } sqe->flags |= IOSQE_BUFFER_SELECT; - sqe->buf_group = 7; + io_uring_sqe_set_buf_group(sqe, 7); io_uring_sqe_set_data64(sqe, 1234); io_uring_submit(&ring); @@ -503,7 +503,7 @@ static int test_enobuf(void) assert(sqe); io_uring_prep_recv_multishot(sqe, fds[0], NULL, 0, 0); io_uring_sqe_set_data64(sqe, 1); - sqe->buf_group = 0; + io_uring_sqe_set_buf_group(sqe, 0); sqe->flags |= IOSQE_BUFFER_SELECT; ret = io_uring_submit(&ring);