personality - richtet die Prozess-Ausführungsumgebung ein
Standard-C-Bibliothek (
libc,
-lc)
#include <sys/personality.h>
int personality(unsigned long Rolle);
Linux unterstützt für jeden Prozess verschiedene
Prozess-Ausführungsumgebungen oder Personalitäten. Unter anderem
mit den Prozess-Ausführungsumgebungen bestimmt der Kernel, wie er
Signalnummern in Signale umsetzen soll. Dieses System ermöglicht Linux
teilweise, für andere UNIX-artige Systeme kompilierte Programme direkt
laufen zu lassen.
Falls
Rolle nicht 0xffffffff ist, setzt
personality() die
Ausführungsumgebung des Aufrufenden auf den durch
Rolle
angegebenen Wert. Wird
Rolle als 0xffffffff angegeben, kann die
aktuelle Rolle ermittelt werden, ohne sie zu ändern.
Eine Liste der verfügbaren Ausführungsumgebungen kann in
<sys/personality.h> gefunden werden. Die
Ausführungsumgebung ist ein 32-Bit-Wert, in der die oberen drei Byte
für Schalter, die den Kernel zur Veränderung bestimmter
Systemaufrufe bewegen, bereitgestellt werden, damit historische oder
architekturale Besonderheiten emuliert werden. Das unterste Byte ist ein Wert,
der die Personalität definiert, die der Kernel annehmen sollte. Die
Schalterwerte sind wie folgt:
-
ADDR_COMPAT_LAYOUT (seit Linux 2.6.9)
- Ist dieser Schalter gesetzt, wird das veraltete virtuelle
Arbeitspeicherlayout bereitgestellt.
-
ADDR_NO_RANDOMIZE (seit Linux 2.6.12)
- Ist dieser Schalter gesetzt, wird
Adressspeicherlayoutverwürfelung deaktiviert.
-
ADDR_LIMIT_32BIT (seit Linux 2.2)
- Begrenzt den Adressraum auf 32-Bit.
-
ADDR_LIMIT_3GB (seit Linux 2.4.0)
- Ist dieser Schalter gesetzt, wird 0xc0000000 als Versatz
verwendet, ab dem nach einem Datenblock virtuellen Speichers von
mmap(2) gesucht wird, andernfalls wird 0xffffe000 benutzt.
-
FDPIC_FUNCPTRS (seit Linux 2.6.11)
- Funktionszeiger im Benutzeradressraum auf
Signalbehandlungsroutinen zeigen (auf bestimmten Architekturen) auf
Deskriptoren.
-
MMAP_PAGE_ZERO (seit Linux 2.4.0)
- Mappt Seite 0 als nur-lesaber (um Programme zu
unterstützen, die von diesem SVr4-Verhalten abhängen).
-
READ_IMPLIES_EXEC (seit Linux 2.6.8)
- Wird dieser Schalter gesetzt, impliziert PROT_READ
PROT_EXEC für mmap(2).
-
SHORT_INODE (seit Linux 2.4.0)
- Kein Effekt (?).
-
STICKY_TIMEOUTS (seit Linux 1.2.0)
- Ist dieser Schalter gesetzt, werden select(2),
pselect(2) und ppoll(2) das zurückgegebene
Zeitüberschreitungsargument nicht ändern, wenn sie durch
eine Signalbehandlungsroutine unterbrochen werden.
-
UNAME26 (seit Linux 3.1)
- Lässt uname(2) eine Versionnummer von 2.6.40+
statt 3.x melden. Wurde als Überbrückung hinzugefügt,
um Anwendungen zu unterstützen, die mit der
Versionsnummernumstellung von Linux 2.6.x auf 3.x nicht umgehen
konnten.
-
WHOLE_SECONDS (seit Linux 1.2.0)
- Kein Effekt.
Die verfügbaren Ausführungsumgebungen sind:
-
PER_BSD (seit Linux 1.2.0)
- BSD. (Kein Effekt)
-
PER_HPUX (seit Linux 2.4)
- Unterstützung für 32-Bit HP/UX. Diese
Unterstützung war nie vollständig und wurde entfernt, so
dass seit Linux 4.0 dieser Wert keinen Effekt hat.
-
PER_IRIX32 (seit Linux 2.2)
- IRIX 5 32-Bit. Funktionierte nie, die Unterstützung
wurde in Linux 2.6.27 entfernt. Impliziert STICKY_TIMEOUTS.
-
PER_IRIX64 (seit Linux 2.2)
- IRIX 6 64-Bit. Impliziert STICKY_TIMEOUTS; ansonsten
kein Effekt.
-
PER_IRIXN32 (seit Linux 2.2)
- IRIX 6 new 32-bit. Impliziert STICKY_TIMEOUTS;
ansonsten kein Effekt.
-
PER_ISCR4 (seit Linux 1.2.0)
- Impliziert STICKY_TIMEOUTS; ansonsten kein
Effekt.
-
PER_LINUX (seit Linux 1.2.0)
- Linux.
-
PER_LINUX32 (seit Linux 2.2)
- [Muss noch dokumentiert werden.]
-
PER_LINUX32_3GB (seit Linux 2.4)
- Impliziert ADDR_LIMIT_3GB.
-
PER_LINUX_32BIT (seit Linux 2.0)
- Impliziert ADDR_LIMIT_32BIT.
-
PER_LINUX_FDPIC (seit Linux 2.6.11)
- Impliziert FDPIC_FUNCPTRS.
-
PER_OSF4 (seit Linux 2.4)
- OSF/1 v4. Unter Alpha werden die oberen 32 Bit von iov_len
im Puffer des Benutzer zurückgesetzt, um kompatibel zu alten
Versionen von OSF/1 zu sein, bei denen iov_len als int definiert
war.
-
PER_OSR5 (seit Linux 2.4)
- Impliziert STICKY_TIMEOUTS und WHOLE_SECONDS;
ansonsten kein Effekt.
-
PER_RISCOS (seit Linux 2.2)
- [Muss noch dokumentiert werden.]
-
PER_SCOSVR3 (seit Linux 1.2.0)
- Impliziert STICKY_TIMEOUTS, WHOLE_SECONDS und
SHORT_INODE; ansonsten kein Effekt.
-
PER_SOLARIS (seit Linux 2.4)
- Impliziert STICKY_TIMEOUTS; ansonsten kein
Effekt.
-
PER_SUNOS (seit Linux 2.4.0)
- Impliziert STICKY_TIMEOUTS. Lenkt Bibliotheks- und
dynamische Linker-Suchen nach /usr/gnemul um. Fehlerhaft,
größtenteils nicht betreut und fast komplett unbenutzt; in
Linux 2.6.26 wurde die Untersützung entfernt.
-
PER_SVR3 (seit Linux 1.2.0)
- Impliziert STICKY_TIMEOUTS und SHORT_INODE;
ansonsten kein Effekt.
-
PER_SVR4 (seit Linux 1.2.0)
- Impliziert STICKY_TIMEOUTS und
MMAP_PAGE_ZERO; ansonsten kein Effekt.
-
PER_UW7 (seit Linux 2.4)
- Impliziert STICKY_TIMEOUTS und
MMAP_PAGE_ZERO; ansonsten kein Effekt.
-
PER_WYSEV386 (seit Linux 1.2.0)
- Impliziert STICKY_TIMEOUTS und SHORT_INODE;
ansonsten kein Effekt.
-
PER_XENIX (seit Linux 1.2.0)
- Impliziert STICKY_TIMEOUTS und SHORT_INODE;
ansonsten kein Effekt.
Bei Erfolg wird die frühere
Rolle zurückgegeben. Tritt ein
Fehler auf, ist der Rückgabewert -1 und
errno wird gesetzt, um
den Fehler anzuzeigen.
- EINVAL
- Der Kernel konnte die Prozess-Ausführungsumgebung
nicht ändern.
Dieser Systemaufruf wurde in Linux 1.1.20 eingeführt (und daher erstmals
in einer stabilen Kernelveröffentlichung mit Linux 1.2.0).
Bibliotheksunterstützung wurde in glibc 2.3 hinzugefügt.
personality() ist Linux-spezifisch und sollte nicht für portable
Programme verwendet werden.
setarch(8)
Die deutsche Übersetzung dieser Handbuchseite wurde von Hanno Wagner
<
[email protected]>, Martin Eberhard Schauer
<
[email protected]>, Chris Leick <
[email protected]>, Mario
Blättermann <
[email protected]> und Helge Kreutzmann
<
[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