Linux x86_64Sinais#14
rt_sigprocmask
Examina e/ou altera a máscara de sinais bloqueados da thread chamadora.
Descrição
Sinais presentes na máscara ficam pendentes (não são entregues) até serem desbloqueados. Base da função de biblioteca `pthread_sigmask`/`sigprocmask(2)`, fundamental para sincronizar tratamento de sinais em programas multi-thread.
Header:
signal.hman 2Assinatura
int rt_sigprocmask(
int how,
const sigset_t * set,
sigset_t * oldset,
size_t sigsetsize
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| how | int | SIG_BLOCK, SIG_UNBLOCK ou SIG_SETMASK — como combinar `set` com a máscara atual. |
| set | const sigset_t * | Novo conjunto de sinais, ou NULL para apenas consultar a máscara atual. |
| oldset | sigset_t * | Se não for NULL, recebe a máscara anterior. |
| sigsetsize | size_t | Tamanho em bytes de sigset_t. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | howint |
| rsi | argumento 2 | setconst sigset_t * |
| rdx | argumento 3 | oldsetsigset_t * |
| r10 | argumento 4 | sigsetsizesize_t |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EFAULT(14)
- Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).
- EINVAL(22)
- Argumento inválido.