io_uring_prep_readv_fixed(3) — Linux manual page

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | NOTES | SEE ALSO | COLOPHON

io_uring_prep_readv_fixed(3) liburing Manual io_uring_prep_readv_fixed(3)

NAME         top

       io_uring_prep_readv_fixed - prepare a vectored read using fixed
       buffers

SYNOPSIS         top

       #include <liburing.h>

       void io_uring_prep_readv_fixed(struct io_uring_sqe *sqe,
                                      int fd,
                                      const struct iovec *iovecs,
                                      unsigned nr_vecs,
                                      __u64 offset,
                                      int flags,
                                      int buf_index);

DESCRIPTION         top

       The io_uring_prep_readv_fixed(3) function prepares a vectored read
       request using fixed (registered) buffers.  The submission queue
       entry sqe is setup to use the file descriptor fd to start reading
       nr_vecs iovecs from the file position offset.

       The iovecs argument points to an array of iovec structures
       describing the read buffers. All buffers must be part of the
       registered buffer set at index buf_index, previously registered
       with io_uring_register_buffers(3).

       The flags argument can contain any per-request flags, such as
       RWF_NOWAIT or other flags supported by preadv2(2).

       Using fixed buffers avoids the overhead of mapping buffers for
       each I/O operation, improving performance for applications that
       reuse the same buffers.

RETURN VALUE         top

       None

ERRORS         top

       The CQE res field will contain the result of the operation, the
       number of bytes read on success. On error, a negative errno value
       is returned.

NOTES         top

       This function accepts an array of iovec's with a size_t number of
       bytes each, but io_uring_cqe's result code is an __s32 value, so
       in theory a short read with a large enough iov_len value could
       generate an ambiguous return.  But the number of bytes actually
       transferred has the same limit as read(2) so this cannot happen in
       practice.

SEE ALSO         top

       io_uring_get_sqe(3), io_uring_submit(3), io_uring_prep_readv(3),
       io_uring_prep_readv2(3), io_uring_prep_read_fixed(3),
       io_uring_prep_writev_fixed(3), io_uring_register_buffers(3)

COLOPHON         top

       This page is part of the liburing (A library for io_uring)
       project.  Information about the project can be found at 
       ⟨https://github.com/axboe/liburing⟩.  If you have a bug report for
       this manual page, send it to io-uring@vger.kernel.org.  This page
       was obtained from the project's upstream Git repository
       ⟨https://github.com/axboe/liburing⟩ on 2026-05-24.  (At that time,
       the date of the most recent commit that was found in the
       repository was 2026-05-18.)  If you discover any rendering
       problems in this HTML version of the page, or you believe there is
       a better or more up-to-date source for the page, or you have
       corrections or improvements to the information in this COLOPHON
       (which is not part of the original manual page), send a mail to
       man-pages@man7.org

liburing-2.10                January 18, 2025io_uring_prep_readv_fixed(3)

Pages that refer to this page: io_uring_prep_readv_fixed(3)io_uring_prep_writev_fixed(3)io_uring_registered_buffers(7)