Voltar à lista
Linux x86_64Sinais#130

rt_sigsuspend

Substitui atomicamente a máscara de sinais e suspende a thread até a chegada de um sinal.

Descrição

Resolve a condição de corrida clássica entre desbloquear um sinal e pausar: troca a máscara e bloqueia em uma única operação atômica, então restaura a máscara original antes de retornar (sempre com -1/EINTR).

man 2

Assinatura

int rt_sigsuspend(const sigset_t * mask, size_t sigsetsize);

Parâmetros

ParâmetroTipoDescrição
maskconst sigset_t *Máscara temporária a usar enquanto a thread está suspensa.
sigsetsizesize_tTamanho em bytes de sigset_t.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1maskconst sigset_t *
rsiargumento 2sigsetsizesize_t

Valor de retorno

Sempre retorna -1, com errno EINTR após o tratamento de um sinal.

Códigos de erro (errno)

EINTR(4)
Chamada interrompida por um sinal.
EFAULT(14)
Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).

Relacionadas