table of contents
IOPERM(2) | Руководство программиста Linux | IOPERM(2) |
ИМЯ¶
ioperm - устанавливает права на работу с портами ввода/вывода
ОБЗОР¶
#include <unistd.h> /* для libc5
*/
#include <sys/io.h> /* для glibc */
int ioperm(unsigned long from, unsigned long num, int turn_on);
ОПИСАНИЕ¶
ioperm() устанавливает биты прав доступа вызывающего процесса к порту ввода-вывода num, начиная с адреса порта from до значения turn_on. Если turn_on не равно 0, вызывающий процесс должен быть привилегированным (CAP_SYS_RAWIO).
Можно задать права доступа только к первым 0x3ff портам ввода-вывода. Для работы с другими портами необходимо использовать системный вызов iopl(2).
Права не наследуются при вызове fork(2); права сохраняются при вызове execve(2); это можно использовать для предоставления доступа к портам ввода-вывода непривилегированным программам.
Данный вызов, в основном, предназначен для архитектуры i386. На большинстве других архитектур он не существует или будет возвращать ошибку.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.
ОШИБКИ¶
СООТВЕТСТВИЕ СТАНДАРТАМ¶
Вызов ioperm() есть только в Linux. Он не должен использоваться в переносимых программах.
ЗАМЕЧАНИЯ¶
В libc5 данный вызов считается системным и имеет прототип в <unistd.h>. В glibc1 этого прототипа нет. В glibc2 в <sys/io.h> и в <sys/perm.h> этот прототип есть. Не используйте последний вариант, он существует только для i386.
СМОТРИТЕ ТАКЖЕ¶
2007-06-15 | Linux |