IOPL(2)

BEZEICHNUNG
iopl - ändere I/O-Privilegebene

ÜBERSICHT
#include <unistd.h>

int iopl(int level);

BESCHREIBUNG
iopl ändert die I/O-Privilegebene des aktuellen Prozesses wie angegeben in level. Dieser Aufruf in notwendig um 8514-kompatible X-Server unter Linux laufen zu lassen. Da diese X-Server Zugriff auf alle 65536 I/O-Ports benötigen, ist der Aufruf ioperm nicht ausreichend. Zusätzlich zu uneingeschränktem Zugriff auf I/O-Ports erlaubt das Laufen in einer höheren Privilegebene dem Prozess auch, Interupts auszuschalten Dies kann möglicherweise das System zusammenbrechen lassen, und wird nicht empfohlen. Zugriffsrechte werden von fork und exec vererbt. Die I/O-Privilegebene eines normalen Prozesses ist 0.

RÜCKGABEWERT
BEi Erfolg wird Null zurückgegeben. Im Fehlerfall wird -1 zurückgegeben und errno entsprechend gesetzt.

FEHLER

EINVAL
    level ist größer als 3.

EPERM
    Der aktuelle User ist nicht der Superuser.

BEMERKUNGEN AUS DER KERNEL-SOURCE
iopl muß benutzt werden wenn man die I/O-Ports hinter 0x3ff benutzen will: um alle 65536 Ports zu Verzeichnen braucht man 8kB Speicherplatz, was ein wenig übertrieben ist.

SIEHE AUCH
ioperm(2).