Linux x86_64E/S assíncrona & eventos#426
io_uring_enter
Notifica o kernel de novas submissões na fila de uma instância io_uring e/ou aguarda conclusões.
Descrição
Em muitos casos de uso com polling habilitado, esta é a única syscall necessária depois da configuração inicial — e em modo SQPOLL puro, nem ela é sempre necessária.
Header:
linux/io_uring.hman 2Desde o kernel 5.1Assinatura
int io_uring_enter(
unsigned int fd,
u32 to_submit,
u32 min_complete,
u32 flags,
sigset_t * sig
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| fd | unsigned int | Descritor da instância io_uring. |
| to_submit | u32 | Número de entradas novas na fila de submissão a considerar. |
| min_complete | u32 | Número mínimo de conclusões a aguardar. |
| flags | u32 | IORING_ENTER_GETEVENTS, IORING_ENTER_SQ_WAKEUP, etc. |
| sig | sigset_t * | Máscara de sinais opcional para uso atômico durante a espera. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | fdunsigned int |
| rsi | argumento 2 | to_submitu32 |
| rdx | argumento 3 | min_completeu32 |
| r10 | argumento 4 | flagsu32 |
| r8 | argumento 5 | sigsigset_t * |
Valor de retorno
Número de entradas efetivamente submetidas 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.
- EBADF(9)
- Descritor de arquivo inválido.
- EBUSY(16)
- Dispositivo ou recurso ocupado.
- EINVAL(22)
- Argumento inválido.
- EINTR(4)
- Chamada interrompida por um sinal.