Linux x86_64Processos & threads#158
arch_prctl
Define ou consulta configurações específicas da arquitetura x86, principalmente os registradores de base FS/GS.
Descrição
Usada pelo runtime do glibc para configurar o ponteiro de thread-local storage (via ARCH_SET_FS), e por depuradores/hipervisores para manipular esses registradores diretamente.
Header:
asm/prctl.hman 2Nota
Exclusiva de x86/x86_64 — outras arquiteturas expõem TLS de formas diferentes (ex.: via clone com CLONE_SETTLS).
Assinatura
int arch_prctl(int code, unsigned long addr);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| code | int | ARCH_SET_FS, ARCH_GET_FS, ARCH_SET_GS, ARCH_GET_GS, ARCH_SET_CPUID, entre outras. |
| addr | unsigned long | Novo valor (para SET) ou ponteiro de saída (para GET), conforme `code`. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | codeint |
| rsi | argumento 2 | addrunsigned long |
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.
- ENODEV(19)
- Dispositivo inexistente.
- EPERM(1)
- Operação não permitida (falta de privilégio).