iopl(2)

BEZEICHNUNG
iopl - I/O-Privilegienstufe ändern

BIBLIOTHEK
Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT
#include <sys/io.h>

[[veraltet]] int iopl(int Stufe);

BESCHREIBUNG
iopl() ändert die E/A-Privilegienstufe des aufrufenden Threads wie durch die zwei niedrigstwertigen Bits in Stufe 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.

RÜCKGABEWERT
Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird -1 zurückgegeben und errno gesetzt, um den Fehler anzuzeigen.

FEHLER

EINVAL
    Stufe 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.

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

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

Ü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 (https://www.gnu.org/licenses/gpl-3.0.html) 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 die Mailingliste der Übersetzer (debian-l10n-german@lists.debian.org).