NAME

io_uring_register_files - register file descriptors

SYNOPSIS

#include <liburing.h>
int io_uring_register_files(struct io_uring *ring,
                            const int *files,
                            unsigned nr_files);
int io_uring_register_files_sparse(struct io_uring *ring,
                            unsigned nr_files);

DESCRIPTION

The io_uring_register_files(3) function registers nr_files number of file descriptors defined by the array files belonging to the ring for subsequent operations.
 
The function registers an empty file table of nr_files number of file descriptors. The sparse variant is available in kernels 5.19 and later.
 
Registering a file table is a prerequisite for using any request that uses direct descriptors.
 
Registered files have less overhead per operation than normal files. This is due to the kernel grabbing a reference count on a file when an operation begins, and dropping it when it's done. When the process file table is shared, for example if the process has ever created any threads, then this cost goes up even more. Using registered files reduces the overhead of file reference management across requests that operate on a file.
 

RETURN VALUE

On success io_uring_register_files(3) and return 0. On failure they return -errno.

SEE ALSO

io_uring_get_sqe(3), io_uring_unregister_files(3)

Recommended readings

Pages related to io_uring_register_files_sparse you should read also:

Questions & Answers

Helpful answers and articles about io_uring_register_files_sparse you may found on these sites:
Stack Overflow Server Fault Super User Unix & Linux Ask Ubuntu Network Engineering DevOps Raspberry Pi Webmasters Google Search