Linux x86_64E/S assíncrona & eventos#210
io_cancel
Tenta cancelar uma operação de I/O assíncrono AIO previamente submetida.
Descrição
Cancelamento é best-effort — operações já em estágio avançado de execução podem completar normalmente mesmo após uma tentativa de cancelamento.
Header:
linux/aio_abi.hman 2Desde o kernel 2.6Assinatura
int io_cancel(
aio_context_t ctx_id,
struct iocb * iocb,
struct io_event * result
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| ctx_id | aio_context_t | Contexto AIO. |
| iocb | struct iocb * | Operação a cancelar. |
| result | struct io_event * | Se o cancelamento tiver sucesso, recebe o evento de conclusão correspondente. |
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 | iocbstruct iocb * |
| rdx | argumento 3 | resultstruct io_event * |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EAGAIN(11)
- Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
- EFAULT(14)
- Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).
- EINVAL(22)
- Argumento inválido.
- ENOSYS(38)
- Chamada de sistema não implementada nesta versão do kernel.