Function read [src]

Queues (but does not submit) an SQE to perform a read(2) or preadv(2) depending on the buffer type. Reading into a ReadBuffer.buffer uses read(2) Reading into a ReadBuffer.iovecs uses preadv(2) If you want to do a preadv2(2) then set rw_flags on the returned SQE. See https://man7.org/linux/man-pages/man2/preadv2.2.html Returns a pointer to the SQE.

Prototype

pub fn read( self: *IoUring, user_data: u64, fd: posix.fd_t, buffer: ReadBuffer, offset: u64, ) !*linux.io_uring_sqe

Parameters

self: *IoUringuser_data: u64fd: posix.fd_tbuffer: ReadBufferoffset: u64

Source

pub fn read( self: *IoUring, user_data: u64, fd: posix.fd_t, buffer: ReadBuffer, offset: u64, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); switch (buffer) { .buffer => |slice| sqe.prep_read(fd, slice, offset), .iovecs => |vecs| sqe.prep_readv(fd, vecs, offset), .buffer_selection => |selection| { sqe.prep_rw(.READ, fd, 0, selection.len, offset); sqe.flags |= linux.IOSQE_BUFFER_SELECT; sqe.buf_index = selection.group_id; }, } sqe.user_data = user_data; return sqe; }