Scroll to navigation

ioperm(2) System Calls Manual ioperm(2)

ИМЯ

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.

ОШИБКИ

Неверные значения from или num.
(на PowerPC) Этот системный вызов не поддерживается.
Не хватает памяти.
Вызывающая нить не имеет достаточно прав.

ВЕРСИИ

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

СТАНДАРТЫ

Linux.

ИСТОРИЯ

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

ПРИМЕЧАНИЯ

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

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

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 (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику по его адресу электронной почты или по адресу списка рассылки русских переводчиков.

2 мая 2024 г. Linux man-pages (unreleased)