Linux x86_64E/S assíncrona & eventos#284
eventfd
Cria um descritor de arquivo que funciona como um contador de eventos de 64 bits, utilizável para sinalização entre threads/processos.
Descrição
Mecanismo de notificação leve, muito usado para acordar um loop epoll a partir de outra thread (ex.: para sinalizar 'há trabalho pendente' ou implementar `eventfd`-based semaphores).
Header:
sys/eventfd.hman 2Desde o kernel 2.6.22Assinatura
int eventfd(unsigned int initval, int flags);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| initval | unsigned int | Valor inicial do contador. |
| flags | int | Nesta versão original, sem efeito — ver eventfd2 para EFD_CLOEXEC/EFD_NONBLOCK/EFD_SEMAPHORE. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | initvalunsigned int |
| rsi | argumento 2 | flagsint |
Valor de retorno
Um descritor eventfd em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EINVAL(22)
- Argumento inválido.
- EMFILE(24)
- Limite de arquivos abertos do processo atingido.
- ENODEV(19)
- Dispositivo inexistente.
- ENOMEM(12)
- Memória insuficiente para completar a operação.