IOPL(2) Linux-Programmierhandbuch IOPL(2)

iopl - I/O-Privilegienstufe ändern

#include <sys/io.h>

int iopl(int level);

iopl() ändert die E/A-Privilegienstufe des aufrufenden Threads wie durch die zwei niedrigstwertigen Bits in level angegeben.

Die I/O-Privilegienstufe eines normalen Threads ist 0. Die Zugriffsrechte werden von den Eltern an die Kinder vererbt.

Dieser Aufruf ist als veraltet anzusehen und ist wesentlich langsamer als ioperm(2). Er wird nur für ältere X-Server bereitgestellt, die Zugriff auf alle 65536 E/A-Ports benötigen. Er ist hauptsächlich für die i386-Architektur bestimmt. Auf vielen anderen Architekturen existiert er nicht und wird immer einen Fehler zurückliefern.

Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird -1 zurückgegeben und errno entsprechend gesetzt.

EINVAL
level ist größer als 3.
ENOSYS
Dieser Aufruf ist nicht implementiert.
EPERM
Der aufrufende Thread hat unzureichende Privilegien, um iopl() aufzurufen; die Capability CAP_SYS_RAWIO wird benötigt, um die E/A-Privilegienstufe über deren aktuellen Wert zu erhöhen.

iopl() ist Linux-spezifisch und sollte nicht in Programmen verwandt werden, die portabel sein sollen.

Glibc2 hat einen Prototyp sowohl in <sys/io.h> als auch in <sys/perm.h>. Vermeiden Sie letzteren, er ist nur auf i386 verfügbar.

Vor Linux 5.5 erlaubte iopl() dem Thread das Laufen in einer höheren I/O-Privilegienstufe. Dies wird wahrscheinlich das System zusammenbrechen lassen und wird nicht empfohlen.

Vor Linux 3.7 wurden die Rechte von mit fork(2) erstellten Kindern geerbt und wurden über execve(2) erhateln. Dieses Verhalten wurde versehentlich in Linux 3.7 geändert und wird nicht mehr wiederhergestellt.

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

Diese Seite ist Teil der Veröffentlichung 5.10 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother <krd@gulu.net>, Helge Kreutzmann <debian@helgefjell.de> und Mario Blättermann <mario.blaettermann@gmail.com> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.

13. August 2020 Linux