ioperm -
устанавливает
права на
работу с
портами
ввода/вывода
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 <
[email protected]>, Dmitriy S. Seregin
<
[email protected]>, Yuri Kozlov <
[email protected]> и
Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]