iopl
изменяет уровень привилегий ввода/вывода текущего процесса в соответствии с
level.
Этот вызов необходим для того, чтобы 8514-совместимые X-серверы могли
работать под управлением Linux. Этим X-серверам необходим доступ ко всем
65536-и портам ввода/вывода, соответственно, им недостаточно вызова
ioperm .
В дополнение к тому, что на высоком уровне привилегий процессу разрешен
неограниченный доступ к портам ввода/вывода, он может также запретить
системные прерывания. Скорее всего, это приведет к сбою системы, поэтому
использование этой возможности не рекомендуется.
Эти права наследуются через fork и exec.
Стандартный уровень привилегий ввода/вывода обычного процесса равен 0.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
При удачном завершении работы возвращаемое значение равно 0. При ошибке оно равно
-1, а переменная
errno
приобретает соответствующее значение.
НАЙДЕННЫЕ ОШИБКИ
EINVAL
Значение
level
больше 3.
EPERM
Пользователь процесса - не суперпользователь.
СООТВЕТСТВИЕ СТАНДАРТАМ
iopl - это функция, специфичная для Linux. Не рекомендуется
использовать ее в программах, переносимых на
другие системы.
ЗАМЕЧАНИЯ
Libc5 воспринимает эту функцию как системный вызов и имеет прототип в
<unistd.h>.
Glibc1 не имеет прототипа этой функции. Glibc2 имеет прототип в
<sys/io.h>
и в
<sys/perm.h>.
Не используйте последнее, этот файл имеется только на i386.