ioperm - setzt Port-Zugriffsrechte für Eingabe/Ausgabe
Standard-C-Bibliothek (
libc,
-lc)
#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.
- EINVAL
- Ungültige Werte für von oder
Anz.
- EIO
- (auf PowerPC) Dieser Aufruf wird nicht
unterstützt.
- ENOMEM
- Speicher aufgebraucht.
- EPERM
- 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)
Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother
<
[email protected]>, Martin Eberhard Schauer <
[email protected]>
und Mario Blättermann <
[email protected]> 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