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

io_getevents

Colhe eventos de conclusão de um contexto de I/O assíncrono AIO.

Descrição

Bloqueia (até um timeout) até que ao menos `min_nr` operações submetidas via `io_submit` tenham completado.

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

Assinatura

int io_getevents(
    aio_context_t ctx_id,
    long min_nr,
    long nr,
    struct io_event * events,
    struct timespec * timeout
);

Parâmetros

ParâmetroTipoDescrição
ctx_idaio_context_tContexto AIO.
min_nrlongNúmero mínimo de eventos a aguardar.
nrlongCapacidade do buffer `events`.
eventsstruct io_event *Recebe os eventos de conclusão.
timeoutstruct timespec *Tempo máximo de espera; NULL bloqueia indefinidamente.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1ctx_idaio_context_t
rsiargumento 2min_nrlong
rdxargumento 3nrlong
r10argumento 4eventsstruct io_event *
r8argumento 5timeoutstruct timespec *

Valor de retorno

Número de eventos retornados 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).
EINTR(4)
Chamada interrompida por um sinal.
EINVAL(22)
Argumento inválido.
ENOSYS(38)
Chamada de sistema não implementada nesta versão do kernel.
ETIMEDOUT(110)
Conexão expirou (timeout).

Relacionadas