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

io_setup

Cria um contexto de I/O assíncrono (AIO) POSIX/Linux, usado pelas syscalls io_submit/io_getevents/io_cancel.

Descrição

Interface de AIO mais antiga do Linux, focada principalmente em I/O de arquivo com O_DIRECT; hoje amplamente superada em flexibilidade e desempenho por `io_uring`.

Header: linux/aio_abi.hman 2Desde o kernel 2.5

Nota

Para I/O assíncrono novo, prefira `io_uring` (io_uring_setup): mais flexível, com throughput maior e suporte a muito mais tipos de operação.

Assinatura

int io_setup(unsigned nr_events, aio_context_t * ctx_idp);

Parâmetros

ParâmetroTipoDescrição
nr_eventsunsignedNúmero máximo de eventos concorrentes suportados pelo contexto.
ctx_idpaio_context_t *Recebe o identificador do novo contexto.

Registradores (x86_64)

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

Valor de retorno

0 em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EAGAIN(11)
Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
EFAULT(14)
Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).
EINVAL(22)
Argumento inválido.
ENOMEM(12)
Memória insuficiente para completar a operação.
ENOSYS(38)
Chamada de sistema não implementada nesta versão do kernel.

Relacionadas