Scroll to navigation

iopl(2) System Calls Manual iopl(2)

NAZWA

iopl - zmienia poziom uprawnień wejścia/wyjścia

BIBLIOTEKA

Standardowa biblioteka C (libc, -lc)

SKŁADNIA

#include <sys/io.h>
[[przestarzałe]] int iopl(int level);

OPIS

iopl() zmienia poziom uprawnień wejścia/wyjścia wątku wywołującego na podstawie dwóch najmniej znaczących bitów parametru level.

Poziom uprawnień wejścia/wyjścia dla normalnego wątku wynosi 0. Uprawnienia są dziedziczone z rodzica na potomka.

To wywołanie jest przestarzałe, jest znacznie wolniejsze od ioperm(2) i jest zapewniane tylko dla starszych serwerów X, które wymagają dostępu do wszystkich 65 536 portów wejścia/wyjścia. Jest przeznaczone głównie do architektury i386. Na wielu innych architekturach nie istnieje lub zawsze zwraca błąd.

WARTOŚĆ ZWRACANA

Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest -1 i ustawiane errno, wskazując błąd.

BŁĘDY

level jest większy niż 3.
To wywołanie jest niezaimplementowane.
Wywołujący wątek jest niewystarczająco uprzywilejowany do wywołania iopl(); do podniesienia poziomu uprawnień wejścia/wyjścia ponad ich aktualny poziom potrzebny jest przywilej CAP_SYS_RAWIO (ang. capability).

STANDARDY

iopl() jest specyficzne dla Linuksa i nie powinno być używane w przenośnych programach.

UWAGI

glibc2 posiada prototyp zarówno w <sys/io.h>, jak i w <sys/perm.h>. Należy unikać tego ostatniego, gdyż jest dostępne tylko na i386.

Przed Linuksem 5.5 iopl() umożliwiało również wątkowi zablokowanie przerwań, przy pracy na wyższych poziomach uprawnień wejścia/wyjścia. Prawdopodobnie spowodowałoby to załamanie systemu i nie jest to zalecane.

Przed Linuksem 3.7, na niektórych architekturach (np. i386), uprawnienia były dziedziczone przez potomka utworzonego za pomocą fork(2) i były zachowywane przez execve(2). To zachowanie zmieniło się niepostrzeżenie w Linuksie 3.7 i nie zostanie przywrócone.

ZOBACZ TAKŻE

ioperm(2), outb(2), capabilities(7)

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl>, Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.

5 lutego 2023 r. Linux man-pages 6.03