Provided by: liburing-dev_2.9-1_amd64 bug

NAME

       io_uring_prep_socket - prepare a socket creation request

SYNOPSIS

       #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);

DESCRIPTION

       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.

RETURN VALUE

       None

ERRORS

       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.

SEE ALSO

       io_uring_get_sqe(3), io_uring_submit(3), socket(2)

liburing-2.2                                      May 27, 2022                           io_uring_prep_socket(3)