Provided by: manpages-ru-dev_4.19.0-7_all bug

ИМЯ

       ioperm - устанавливает права на работу с портами ввода/вывода

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <sys/io.h>

       int ioperm(unsigned long from, unsigned long num, int turn_on);

ОПИСАНИЕ

       Вызов  ioperm() устанавливает num бит прав доступа вызывающей нити, начиная с адреса порта
       from. Если turn_on не равно  0,  то  права  для  указанных  битов  устанавливаются,  иначе
       сбрасываются.  Если  turn_on  не  равно  0,  вызывающая нить должна быть привилегированной
       (CAP_SYS_RAWIO).

       До Linux 2.6.8,  можно  было  указывать  только  первые  0x3ff  портов  ввода-вывода.  Для
       остальных  портов  нужно  было  использовать  системный  вызов iopl(2) (с аргументом level
       равным 3). Начиная с Linux 2.6.8, можно указывать 65536 портов ввода-вывода.

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

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

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

       On  success, zero is returned.  On error, -1 is returned, and errno is set to indicate the
       error.

ОШИБКИ

       EINVAL Неверные значения from или num.

       EIO    (на PowerPC) Этот системный вызов не поддерживается.

       ENOMEM Не хватает памяти.

       EPERM  Вызывающая нить не имеет достаточно прав.

СТАНДАРТЫ

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

ЗАМЕЧАНИЯ

       В /proc/ioports  показываются  все  порты  ввода-вывода,  которые  выделены  в  системе  в
       настоящий момент.

       До Linux 2.4 права не наследовались потомком, созданным fork(2).

       glibc  has  an  ioperm()   prototype  both  in  <sys/io.h> and in <sys/perm.h>.  Avoid the
       latter, it is available on i386 only.

СМ. ТАКЖЕ

       iopl(2), outb(2), capabilities(7)

ПЕРЕВОД

       Русский   перевод   этой    страницы    руководства    был    сделан    Azamat    Hackimov
       <azamat.hackimov@gmail.com>,    Dmitriy   S.   Seregin   <dseregin@59.ru>,   Yuri   Kozlov
       <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе  этой  страницы  руководства,  пожалуйста,  отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.