Linux x86_64E/S assíncrona & eventos#441
epoll_pwait2
Como epoll_pwait, mas aceita um timeout com resolução de nanossegundos (struct timespec) em vez de milissegundos.
Descrição
Alinha epoll_wait à precisão de timeout já disponível em ppoll/pselect6.
man 2Desde o kernel 5.11
Assinatura
int epoll_pwait2(
int epfd,
struct epoll_event * events,
int maxevents,
const struct timespec * timeout,
const sigset_t * sigmask
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| epfd | int | Descritor da instância epoll. |
| events | struct epoll_event * | Recebe os eventos ocorridos. |
| maxevents | int | Capacidade do buffer `events`. |
| timeout | const struct timespec * | Tempo máximo de espera, com resolução de nanossegundos; NULL bloqueia indefinidamente. |
| sigmask | const sigset_t * | Máscara de sinais a usar atomicamente durante a espera. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | epfdint |
| rsi | argumento 2 | eventsstruct epoll_event * |
| rdx | argumento 3 | maxeventsint |
| r10 | argumento 4 | timeoutconst struct timespec * |
| r8 | argumento 5 | sigmaskconst sigset_t * |
Valor de retorno
Número de descritores com eventos em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EBADF(9)
- Descritor de arquivo inválido.
- 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.