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

io_uring_setup

Cria uma instância io_uring: duas filas circulares compartilhadas com o kernel para submissão e conclusão de operações de I/O assíncronas de alta performance.

Descrição

A interface de I/O assíncrono mais moderna e de menor overhead do Linux. Ao contrário do AIO tradicional, cobre praticamente qualquer operação (não só I/O de arquivo com O_DIRECT) — read/write, accept/connect, openat, send/recv, e até chamadas arbitrárias via linked ops — e pode operar quase inteiramente sem syscalls adicionais após a configuração inicial, através de memória compartilhada e (opcionalmente) um kernel thread de polling.

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

Assinatura

int io_uring_setup(u32 entries, struct io_uring_params * params);

Parâmetros

ParâmetroTipoDescrição
entriesu32Tamanho desejado da fila de submissão (arredondado para a próxima potência de 2).
paramsstruct io_uring_params *Configura flags e recebe os deslocamentos de memória das filas compartilhadas.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1entriesu32
rsiargumento 2paramsstruct io_uring_params *

Valor de retorno

Um descritor de arquivo representando a instância io_uring em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EFAULT(14)
Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).
EINVAL(22)
Argumento inválido.
EMFILE(24)
Limite de arquivos abertos do processo atingido.
ENOMEM(12)
Memória insuficiente para completar a operação.
EPERM(1)
Operação não permitida (falta de privilégio).

Relacionadas