Voltar à lista
Linux x86_64E/S assíncrona & eventos#290

eventfd2

Como eventfd, mas aceita flags para EFD_CLOEXEC, EFD_NONBLOCK e EFD_SEMAPHORE.

Descrição

EFD_SEMAPHORE altera a semântica de leitura: em vez de zerar o contador inteiro, cada leitura decrementa em 1, tornando o eventfd utilizável diretamente como um semáforo.

Header: sys/eventfd.hman 2Desde o kernel 2.6.27

Assinatura

int eventfd2(unsigned int initval, int flags);

Parâmetros

ParâmetroTipoDescrição
initvalunsigned intValor inicial do contador.
flagsintEFD_CLOEXEC, EFD_NONBLOCK, EFD_SEMAPHORE.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1initvalunsigned int
rsiargumento 2flagsint

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.

Relacionadas