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

io_pgetevents

Como io_getevents, mas substitui atomicamente a máscara de sinais durante a espera.

Descrição

Análoga de `io_getevents` para `pselect6`/`ppoll`/`epoll_pwait`, completando o padrão *p* para as principais chamadas de espera do kernel.

man 2Desde o kernel 4.18

Assinatura

int io_pgetevents(
    aio_context_t ctx_id,
    long min_nr,
    long nr,
    struct io_event * events,
    struct timespec * timeout,
    const struct __aio_sigset * usig
);

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.
usigconst struct __aio_sigset *Máscara de sinais a usar atomicamente durante a espera.

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 *
r9argumento 6usigconst struct __aio_sigset *

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