ioperm(2)

NUME
ioperm - stabilește permisiunile de intrare/ieșire a porturilor

BIBLIOTECA
Biblioteca C standard (libc, -lc)

REZUMAT
#include <sys/io.h>

int ioperm(unsigned long from, unsigned long num, int turn_on);

DESCRIERE
ioperm() stabilește biții de permisiune de acces la port pentru firul apelant pentru num biți începând de la adresa de port from. Dacă turn_on este diferit de zero, atunci permisiunea pentru biții specificați este activată; în caz contrar, este dezactivată. Dacă turn_on este diferit de zero, firul apelant trebuie să fie privilegiat (CAP_SYS_RAWIO).

Înainte de Linux 2.6.8, numai primele porturi I/O 0x3ff puteau fi specificate în acest mod. Pentru mai multe porturi, trebuia să se utilizeze apelul de sistem iopl(2) (cu un argument level de 3). Începând cu Linux 2.6.8, pot fi specificate 65.536 de porturi In/Ieș.

Permisiunile sunt moștenite de procesul-copil creat de fork(2) (a se vedea însă NOTE). Permisiunile sunt păstrate în execve(2); acest lucru este util pentru a acorda permisiuni de acces la porturi programelor neprivilegiate.

Acest apel este destinat în special arhitecturii i386. Pe multe alte arhitecturi nu există sau va returna întotdeauna o eroare.

VALOAREA RETURNATĂ
În caz de succes, se returnează zero. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI

EINVAL
    Valori nevalide pentru from sau num.Invalid values for from or num.

EIO (pe PowerPC) Acest apel nu este suportat

ENOMEM
    Memorie insuficientă.

EPERM
    Firul apelant nu are privilegii suficiente.

VERSIUNI
glibc are un prototip ioperm() atât în <sys/io.h>, cât și în <sys/perm.h>. Evitați-l pe acesta din urmă, este disponibil doar pe i386.

STANDARDE
Linux.

ISTORIC
Înainte de Linux 2.4, permisiunile nu erau moștenite de un proces-copil creat de fork(2).

NOTE
Fișierul /proc/ioports arată porturile In/Ieș care sunt alocate în prezent pe sistem.

CONSULTAȚI ȘI
iopl(2), outb(2), capabilities(7)

TRADUCERE
Traducerea în limba română a acestui manual a fost creată de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă Nicio RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.