Linux x86_64Dispositivos & ioctl#173
ioperm
Concede ou revoga permissão para acessar um intervalo de portas de E/S x86 diretamente do espaço de usuário.
Descrição
Ajusta o bitmap de permissões de portas de E/S da tarefa, permitindo instruções `in`/`out` em modo usuário para o intervalo especificado sem precisar de `iopl(3)`. Usado por drivers legados em espaço de usuário (ex.: X server antigo, alguns utilitários de hardware).
Header:
sys/io.hman 2Nota
Exige CAP_SYS_RAWIO. Disponível apenas em x86.
Assinatura
int ioperm(unsigned long from, unsigned long num, int turn_on);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| from | unsigned long | Primeira porta de E/S do intervalo. |
| num | unsigned long | Quantidade de portas a partir de `from`. |
| turn_on | int | 1 para conceder acesso, 0 para revogar. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | fromunsigned long |
| rsi | argumento 2 | numunsigned long |
| rdx | argumento 3 | turn_onint |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EINVAL(22)
- Argumento inválido.
- ENOSYS(38)
- Chamada de sistema não implementada nesta versão do kernel.
- EPERM(1)
- Operação não permitida (falta de privilégio).
- EIO(5)
- Erro de E/S físico.