PERSONALITY(2)

BEZEICHNUNG
personality - richtet die Prozess-Ausführungsumgebung ein

ÜBERSICHT
#include <sys/personality.h>

int personality(unsigned long persona);

BESCHREIBUNG
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 persona nicht 0xffffffff ist setzt personality() die Ausführungsumgebung des Aufrufenden auf den durch persona angegebenen Wert. Wird persona als 0xffffffff angegeben, kann die aktuelle Persona 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)
    Map page 0 as read-only (to support binaries that depend on this SVr4 behavior).

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

RÜCKGABEWERT
Bei Erfolg wird die frühere persona zurückgegeben. Tritt ein Fehler auf, ist der Rückgabewert -1 und errno wird entsprechend gesetzt.

FEHLER

EINVAL
    Der Kernel konnte die Prozess-Ausführungsumgebung nicht ändern.

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

KONFORM ZU
personality() ist Linux-spezifisch und sollte nicht für portable Programme verwendet werden.

SIEHE AUCH
setarch(8)

KOLOPHON
Diese Seite ist Teil der Veröffentlichung 4.16 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 Hanno Wagner <wagner@bidnix.bid.fh-hannover.de>, Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>, Mario Blättermann <mario.blaettermann@gmail.com>, Helge Kreutzmann <debian@helgefjell.de> und Chris Leick <c.leick@vollbio.de> 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 <debian-l10n-german@lists.debian.org>.