Voltar à lista
Linux x86_64E/S assíncrona & eventos#427

io_uring_register

Registra recursos (buffers, descritores de arquivo, eventfd) com uma instância io_uring para reduzir overhead por operação.

Descrição

Pré-registrar buffers e descritores evita que o kernel precise validar/mapear esses recursos a cada operação individual, sendo uma das principais fontes do ganho de desempenho de io_uring sobre AIO tradicional.

Header: linux/io_uring.hman 2Desde o kernel 5.1

Assinatura

int io_uring_register(
    unsigned int fd,
    unsigned int opcode,
    void * arg,
    unsigned int nr_args
);

Parâmetros

ParâmetroTipoDescrição
fdunsigned intDescritor da instância io_uring.
opcodeunsigned intIORING_REGISTER_BUFFERS, IORING_REGISTER_FILES, etc.
argvoid *Argumento cujo formato depende de `opcode`.
nr_argsunsigned intNúmero de elementos em `arg`.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1fdunsigned int
rsiargumento 2opcodeunsigned int
rdxargumento 3argvoid *
r10argumento 4nr_argsunsigned int

Valor de retorno

Depende de `opcode`; em geral 0 em sucesso, -1 em erro, com errno definido.

Códigos de erro (errno)

EBADF(9)
Descritor de arquivo inválido.
EBUSY(16)
Dispositivo ou recurso ocupado.
EINVAL(22)
Argumento inválido.
ENOMEM(12)
Memória insuficiente para completar a operação.
EFAULT(14)
Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).

Relacionadas