Linux x86_64Escalonamento#314
sched_setattr
Versão estendida de sched_setscheduler, com suporte à política SCHED_DEADLINE e outros atributos avançados.
Descrição
Interface extensível (via struct versionada) para configurar escalonamento, incluindo a política SCHED_DEADLINE (escalonamento baseado em prazos, runtime e período — usada em sistemas de tempo real) que não é acessível pela API mais antiga.
Header:
sched.hman 2Desde o kernel 3.14Assinatura
int sched_setattr(pid_t pid, struct sched_attr * attr, unsigned int flags);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| pid | pid_t | PID alvo; 0 significa o chamador. |
| attr | struct sched_attr * | Estrutura versionada com política e atributos (prioridade, runtime, deadline, period). |
| flags | unsigned int | Reservado; deve ser 0. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | pidpid_t |
| rsi | argumento 2 | attrstruct sched_attr * |
| rdx | argumento 3 | flagsunsigned int |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EBUSY(16)
- Dispositivo ou recurso ocupado.
- EINVAL(22)
- Argumento inválido.
- EPERM(1)
- Operação não permitida (falta de privilégio).
- ESRCH(3)
- Processo inexistente.
- E2BIG(7)
- Lista de argumentos grande demais.