SPDX-License-Identifier: LGPL-2.0-or-later
#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 ");"
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) 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, or IORING_FILE_INDEX_ALLOC if io_uring should allocate a free one. If the direct variant is 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.