Scroll to navigation

ioperm(2) System Calls Manual ioperm(2)

NUME

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

BIBLIOTECA

Biblioteca C standard (libc, -lc)

SINOPSIS

#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-IEȘIRE

Valori nevalide pentru from sau num.Invalid values for from or num.
(pe PowerPC) Acest apel nu este suportat
Memorie insuficientă.
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 făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 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.

2 mai 2024 Pagini de manual de Linux 6.8