table of contents
IOPL(2) | Руководство программиста Linux | IOPL(2) |
ИМЯ¶
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 устанавливается в соответствующее значение.
ОШИБКИ¶
СООТВЕТСТВИЕ СТАНДАРТАМ¶
Вызов iopl() есть только в Linux, и он не должен использоваться в переносимых программах.
ЗАМЕЧАНИЯ¶
В glibc2 прототип расположен в <sys/io.h> и <sys/perm.h>. Не используйте последний вариант, он существует только для i386.
До Linux 3.7 на некоторых архитектурах (например, i386), права наследовались потомком, созданным fork(2), и сохранялись при execve(2). Такое поведение было неумышленно изменено в Linux 3.7, и не будет возвращено назад.
СМ. ТАКЖЕ¶
ЗАМЕЧАНИЯ¶
Эта страница является частью проекта Linux man-pages версии 4.16. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.
ПЕРЕВОД¶
Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.
15 сентября 2017 г. | Linux |