Man:Man2/ioperm.2
Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.
Зміст |
Назва
ioperm - встановлює дозволи вводу-виводу портів
Стислий огляд
#include <unistd.h> /* для libc5 */
#include <sys/io.h> /* для glibc */
int ioperm(unsigned long from, unsigned long num, int turn_on);
Опис
Іoperm встановлює біти прав доступу процесу до портів (за адресою) num байтів, починаючи з адреси порту from. Значення дозволу будучи turn_on. Для використання функції ioperm необхідні права root.
Таким чином, можна задати права доступу тільки першим 0x3ff портам вводу-виводу. Для роботи з іншими портами необхідно використовувати функцію iopl. Права не успадковуються після fork(), але успадковуються при exec(). Це можна використати для надання доступу до портів вводу-виводу непривілейованим процесам.
Повернені значення
При вдалому завершенні виклику, повернене значення дорівнюватиме 0. При помилці воно дорівнює -1, і змінна errno також отримає значення помилки.
Коди помилок
- EINVAL
- Недійсне значення from або num.
- EPERM
- Той хто викликав функцію не має достатніх повноважень CAP_SYS_RAWIO.
- EIO
- (Тільки для PPC). Цей виклик не підтримується.
Відповідність стандартам
ioperm являється специфічним для Linux викликом. Не рекомендовано використовувати її у програмах, стерпних на переносних на інші системи програмах.
Зауваження
Libc5 розглядає дану функцію як системний виклик і містить прототип для неї у <unistd.h>. У Glibc1 цього прототипу немає. У Glibc2 цей прототип знаходиться в обох <sys/io.h> та <sys/perm.h>. Не використовуйте другий варіант, він існує тільки для i386.

