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âmetro | Tipo | Descrição |
|---|---|---|
| ctx_id | aio_context_t | Contexto AIO. |
| min_nr | long | Número mínimo de eventos a aguardar. |
| nr | long | Capacidade do buffer `events`. |
| events | struct io_event * | Recebe os eventos de conclusão. |
| timeout | struct timespec * | Tempo máximo de espera. |
| usig | const struct __aio_sigset * | 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 | ctx_idaio_context_t |
| rsi | argumento 2 | min_nrlong |
| rdx | argumento 3 | nrlong |
| r10 | argumento 4 | eventsstruct io_event * |
| r8 | argumento 5 | timeoutstruct timespec * |
| r9 | argumento 6 | usigconst 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).