IOPERM(2) Linux-Programmierhandbuch IOPERM(2)

ioperm - setzt Port-Zugriffsrechte für Eingabe/Ausgabe

ÜBERSICHT

#include <sys/io.h>
int ioperm(unsigned long von, unsigned long Anz, int einschalten);

ioperm() setzt die Bits für die Port-Zugriffsrechte des aufrufenden Prozesses ab der Port-Adresse von für Anz Byte auf den Wert einschalten. Wenn der Wert von einschalten nicht Null ist, muss der aufrufende Prozess privilegiert sein (CAP_SYS_RAWIO).

Mit Linux-Versionen älter als 2.6.8 können nur die ersten 0x3ff E/A-Ports auf diese Weise angegeben werden. Für weitere Ports muss der Systemaufruf iopl(2) verwendet werden, mit einem level-Argument von 3. Seit Linux 2.6.8 können 65536 Ports angegeben werden.

Von fork(2) erzeugte Kindprozesse erben die Zugriffsrechte (siehe aber auch HINWEISE). Die Rechte bleiben über Aufrufe von execve(2) erhalten. Das ist nützlich für die Gewährung von Port-Zugriffsberechtigungen für nicht privilegierte Programme.

Der Aufruf ist hauptsächlich für die i386-Architektur. 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 gesetzt, um den Fehler anzuzeigen.

Ungültige Werte für von oder Anz.
(auf PowerPC) Dieser Aufruf wird nicht unterstützt.
Speicher aufgebraucht.
Der aufrufende Prozess hat unzureichende Rechte.

ioperm() ist Linux-spezifisch und sollte nicht in Programmen verwendet werden, die portierbar sein sollen.

Die Datei /proc/ioports zeigt die E/A-Ports, die aktuell im System zugewiesen sind.

Vor Linux 2.4 wurden Rechte nicht von durch fork(2) erstellte Kinder ererbt.

Glibc2 hat einen ioperm()-Prototypen sowohl in <sys/io.h> als auch in <sys/perm.h>. Vermeiden Sie den Letzteren, weil er nur für i386 verfügbar ist.

iopl(2), outb(2), capabilities(7)

Diese Seite ist Teil der Veröffentlichung 5.13 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>, Martin Eberhard Schauer <Martin.E.Schauer@gmx.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 die Mailingliste der Übersetzer.

22. März 2021 Linux