IOPL(2)

BEZEICHNUNG
iopl - I/O-Privilegienstufe ändern

ÜBERSICHT
#include <sys/io.h>

int iopl(int level);

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

Dieser Aufruf ist notwendig, um 8514-kompatible X-Server unter Linux auszuführen. Da diese X-Server Zugriff auf alle 65536 I/O-Ports benötigen, ist der Aufruf ioperm(2) nicht ausreichend.

Zusätzlich zu uneingeschränktem Zugriff auf I/O-Ports erlaubt das Laufen in einer höheren I/O-Privilegienstufe dem Prozess auch, Interupts auszuschalten. Dies wird wahrscheinlich das System zusammenbrechen lassen und wird nicht empfohlen.

Zugriffsrechte werden nicht vom dem durch fork(2) erstellten Kindprozess ererbt und werden nicht über execve(2) erhalten (siehe aber auch HINWEISE).

Die I/O-Privilegienstufe eines normalen Prozesses ist 0.

Der Aufruf ist hauptsächlich für die i386-Architektur. Auf vielen anderen Architekturen existiert er nicht und wird immer einen Fehler zurückliefern.

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

FEHLER

EINVAL
    level ist größer als 3.

ENOSYS
    Dieser Aufruf ist nicht implementiert.

EPERM
    Der aufrufende Prozess 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.

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

ANMERKUNGEN
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 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.

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

KOLOPHON
Diese Seite ist Teil der Veröffentlichung 5.03 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/.

ÜBERSETZUNG
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>.