Главная » 2017 » Ноябрь » 19 » man 2 iopl
22:44
man 2 iopl

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


iopl - меняет уровень привилегий ввода-вывода



ОБЗОР


#include <sys/io.h>

int iopl(int level);



ОПИСАНИЕ


iopl() изменяет уровень привилегий ввода/вывода вызывающего процесса, задаваемый
двумя младшими битами в значении level.

Этот вызов необходим для того, чтобы 8514-совместимые X-серверы могли работать под
управлением Linux. Этим X-серверам необходим доступ ко всем 65536-и портам
ввода/вывода, вызова ioperm(2) для этого недостаточно.

В дополнение к неограниченному доступу к портам ввода-вывода работа на высоком
уровне привилегий также позволяет процессу отключать прерывания. Скорее всего, это
приведет к сбою системы, поэтому использование этой возможности не рекомендуется.

Права не наследуются дочерним процессом, созданным fork(2) и не сохраняются при
вызове execve(2) (но смотрите ЗАМЕЧАНИЯ).

Уровень привилегий ввода/вывода обычного процесса равен 0.

Данный вызов, в основном, предназначен для архитектуры i386. На большинстве других
архитектур он не существует или будет возвращать ошибку.



ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ


При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а errno
устанавливается в соответствующее значение.



ОШИБКИ


EINVAL Значение level больше 3.

ENOSYS Этот вызов не реализован.

EPERM У вызывающего процесса недостаточно прав вызвать iopl(); для повышения
уровня привилегий ввода-вывода выше текущего значения требуется мандат
CAP_SYS_RAWIO.



СООТВЕТСТВИЕ СТАНДАРТАМ


Вызов iopl() есть только в Linux, и он не должен использоваться в переносимых
программах.



ЗАМЕЧАНИЯ


В glibc2 прототип расположен в <sys/io.h> и <sys/perm.h>. Не используйте последний
вариант, он существует только для i386.

До Linux 3.7 на некоторых архитектурах (например, i386), права наследовались
потомком, созданным fork(2), и сохранялись при execve(2). Такое поведение было
неумышленно изменено в Linux 3.7, и не будет возвращено назад.



СМОТРИТЕ ТАКЖЕ


ioperm(2), outb(2), capabilities(7)



Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 1659 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar