Voltar à lista
Linux x86_64IPC & sincronização#454

futex_wake

Versão simplificada e mais rápida de futex(FUTEX_WAKE), com uma API dedicada em vez de multiplexada.

Descrição

Parte de uma reforma da API de futex que separa cada operação em uma syscall própria, mais simples de otimizar e verificar do que a antiga interface multiplexada por `futex_op`.

man 2Desde o kernel 6.7

Assinatura

int futex_wake(void * uaddr, unsigned long mask, int nr, unsigned int flags);

Parâmetros

ParâmetroTipoDescrição
uaddrvoid *Endereço da palavra futex.
maskunsigned longMáscara de bits para acordar seletivamente apenas waiters compatíveis.
nrintNúmero máximo de waiters a acordar.
flagsunsigned intFlags de tamanho/privacidade do futex.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1uaddrvoid *
rsiargumento 2maskunsigned long
rdxargumento 3nrint
r10argumento 4flagsunsigned int

Valor de retorno

Número de waiters acordados em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EINVAL(22)
Argumento inválido.
EFAULT(14)
Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).

Relacionadas