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

ppoll

Como poll, mas com resolução de nanossegundos no timeout e substituição atômica da máscara de sinais durante a espera.

Descrição

Análoga de `poll` para `pselect6`.

man 2Desde o kernel 2.6.16

Assinatura

int ppoll(
    struct pollfd * fds,
    nfds_t nfds,
    const struct timespec * tmo_p,
    const sigset_t * sigmask
);

Parâmetros

ParâmetroTipoDescrição
fdsstruct pollfd *Array de descritores e eventos de interesse.
nfdsnfds_tNúmero de elementos em `fds`.
tmo_pconst struct timespec *Tempo máximo de espera; NULL bloqueia indefinidamente.
sigmaskconst sigset_t *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 1fdsstruct pollfd *
rsiargumento 2nfdsnfds_t
rdxargumento 3tmo_pconst struct timespec *
r10argumento 4sigmaskconst sigset_t *

Valor de retorno

Número de descritores com eventos pendentes 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.
ENOMEM(12)
Memória insuficiente para completar a operação.

Relacionadas