Scroll to navigation

IOPL(2) Руководство программиста Linux IOPL(2)

ИМЯ

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

СИНТАКСИС

#include <sys/io.h>

int iopl(int level);

ОПИСАНИЕ

iopl() changes the I/O privilege level of the calling thread, as specified by the two least significant bits in level.

The I/O privilege level for a normal thread is 0. Permissions are inherited from parents to children.

This call is deprecated, is significantly slower than ioperm(2), and is only provided for older X servers which require access to all 65536 I/O ports. It is mostly for the i386 architecture. On many other architectures it does not exist or will always return an error.

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

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

ОШИБКИ

Значение level больше 3.
Этот вызов не реализован.
The calling thread has insufficient privilege to call iopl(); the CAP_SYS_RAWIO capability is required to raise the I/O privilege level above its current value.

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

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

ЗАМЕЧАНИЯ

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

Prior to Linux 5.5 iopl() allowed the thread to disable interrupts while running at a higher I/O privilege level. This will probably crash the system, and is not recommended.

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

СМ. ТАКЖЕ

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

ЗАМЕЧАНИЯ

Эта страница является частью проекта Linux man-pages версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу 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.

13 августа 2020 г. Linux