|
NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | SEE ALSO | COLOPHON |
|
|
|
io_uring_prep_socket(3) liburing Manual io_uring_prep_socket(3)
io_uring_prep_socket - prepare a socket creation request
#include <sys/socket.h>
#include <liburing.h>
void io_uring_prep_socket(struct io_uring_sqe *sqe,
int domain,
int type,
int protocol,
unsigned int flags);
void io_uring_prep_socket_direct(struct io_uring_sqe *sqe,
int domain,
int type,
int protocol,
unsigned int file_index,
unsigned int flags);
void io_uring_prep_socket_direct_alloc(struct io_uring_sqe *sqe,
int domain,
int type,
int protocol,
unsigned int flags);
The io_uring_prep_socket(3) function prepares a socket creation
request. The submission queue entry sqe is setup to use the
communication domain defined by domain and use the communication
type defined by type and the protocol set by protocol. The flags
argument are currently unused.
The io_uring_prep_socket_direct(3) helper works just like
io_uring_prep_socket(3), except it maps the socket to a direct
descriptor rather than return a normal file descriptor. The
file_index argument should be set to the slot that should be used
for this socket.
The io_uring_prep_socket_direct_alloc(3) helper works just like
io_uring_prep_socket_direct(3), except it allocates a new direct
descriptor rather than pass a free slot in. It is equivalent to
using io_uring_prep_socket_direct(3) with IORING_FILE_INDEX_ALLOC
as the file_index . Upon completion, the res field of the CQE
will return the direct slot that was allocated for the socket.
If the direct variants are used, the application must first have
registered a file table using io_uring_register_files(3) of the
appropriate size. Once registered, a direct socket request may use
any entry in that table, as long as it is within the size of the
registered table. If a specified entry already contains a file,
the file will first be removed from the table and closed. It's
consistent with the behavior of updating an existing file with
io_uring_register_files_update(3).
For a direct descriptor socket request, the file_index argument
can be set to IORING_FILE_INDEX_ALLOC, In this case a free entry
in io_uring file table will be used automatically and the file
index will be returned as CQE res. -ENFILE is otherwise returned
if there is no free entries in the io_uring file table.
These functions prepare an async socket(2) request. See that man
page for details.
None
The CQE res field will contain the result of the operation. See
the related man page for details on possible values. Note that
where synchronous system calls will return -1 on failure and set
errno to the actual error value, io_uring never uses errno.
Instead it returns the negated errno directly in the CQE res
field.
io_uring_get_sqe(3), io_uring_submit(3), socket(2)
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 2025-08-11. (At that time,
the date of the most recent commit that was found in the
repository was 2025-08-02.) 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.2 May 27, 2022 io_uring_prep_socket(3)
Pages that refer to this page: io_uring_prep_socket(3), io_uring_prep_socket_direct(3), io_uring_prep_socket_direct_alloc(3)