Назва

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.

Дивіться також

?iopl(2)