Linux x86_64Processos & threads#157
prctl
Ponto de entrada multiplexado para dezenas de operações de controle sobre o próprio processo.
Descrição
Cobre um leque muito amplo de ajustes: nome da thread (PR_SET_NAME), comportamento em dumpability/core dump (PR_SET_DUMPABLE), no_new_privs para sandboxing (PR_SET_NO_NEW_PRIVS), subreaper de processos órfãos (PR_SET_CHILD_SUBREAPER), controle de speculative execution (PR_SET_SPECULATION_CTRL), entre muitas outras.
Header:
sys/prctl.hman 2Assinatura
int prctl(
int option,
unsigned long arg2,
unsigned long arg3,
unsigned long arg4,
unsigned long arg5
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| option | int | Operação a executar. |
| arg2 | unsigned long | Argumento cujo significado depende de `option`. |
| arg3 | unsigned long | Argumento cujo significado depende de `option`. |
| arg4 | unsigned long | Argumento cujo significado depende de `option`. |
| arg5 | unsigned long | Argumento cujo significado depende de `option`. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | optionint |
| rsi | argumento 2 | arg2unsigned long |
| rdx | argumento 3 | arg3unsigned long |
| r10 | argumento 4 | arg4unsigned long |
| r8 | argumento 5 | arg5unsigned long |
Valor de retorno
Depende de `option`; em geral 0 ou um valor informativo em sucesso, -1 em erro, com errno definido.
Códigos de erro (errno)
- EACCES(13)
- Permissão negada.
- 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).