Linux x86_64E/S assíncrona & eventos#209
io_submit
Submete uma ou mais operações de I/O assíncrono a um contexto AIO.
Descrição
As operações (leitura, escrita, fsync) são enfileiradas e executadas de forma assíncrona; a conclusão é observada com `io_getevents`.
Header:
linux/aio_abi.hman 2Desde o kernel 2.5Assinatura
int io_submit(aio_context_t ctx_id, long nr, struct iocb ** iocbpp);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| ctx_id | aio_context_t | Contexto AIO. |
| nr | long | Número de operações em `iocbpp`. |
| iocbpp | struct iocb ** | Array de ponteiros para blocos de controle de I/O descrevendo cada operação. |
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 | nrlong |
| rdx | argumento 3 | iocbppstruct iocb ** |
Valor de retorno
Número de operações submetidas com 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.
- 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).
- EINVAL(22)
- Argumento inválido.
- ENOSYS(38)
- Chamada de sistema não implementada nesta versão do kernel.