DOKK / manpages / debian 11 / manpages-pt-dev / iopl.2.pt
IOPL(2) Manual do Programador Linux IOPL(2)

iopl - altera o nível de privilégio de E/S

#include <unistd.h> /* for libc5 */
#include <sys/io.h> /* for glibc */

int iopl(int level);

iopl altera o nível de privilégio de E/S de um processo aatual, como especificado em level.

Esta chamada é necessária para permitir a compatibilidade que servidores X 8514 rodem no Linux. Desde então estes servidores X acessam todas as portas de E/S do 65536, a chamada ioperm não foi suficiente.

Em adição a concessão de acesso as portas de E/S irrestrito, rodando em um alto nível de privilégio de E/S também permite ao processo desabilitar interrupções. Isto irá provavelmente derrubar o sistema, e não é recomendado.

Permissões são herdadas através de fork e exec.

O nível de privilégio de E/S para um processo normal é 0.

Em caso de sucesso, zero é retornado. Caso contrário, -1 é retornado, e errno é selecionado adequamente.

level é maior que 3.
O usuário autal não é o superusuário.

iopl ela tem que ser usada quando você procura acessar as portas de E/S além do intervalo 0x3ff: para obter o mapa de bits completo do 65536 você precisaria de 8kB de mapa de bits/processo,o que é um excesso de bits.

iopl é específica do Linux e não deveria ser usada em processos que pretendem ser portáveis.

Libc5 trata com uma chamada de sistema e tem um tipo primitivo em <unistd.h>. Glibc1 não tem um tipo primitivo. Glibc2 tem um tipo primitivo em <sys/io.h> e em <sys/perm.h>. Evitar o segundo, ele está disponível somente nos i386.

ioperm(2)

24/07/1993 Linux 0.99.11