personality(2) System Calls Manual personality(2) BEZEICHNUNG personality - richtet die Prozess-Ausfuhrungsumgebung ein BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include int personality(unsigned long Rolle); BESCHREIBUNG Linux unterstutzt fur jeden Prozess verschiedene Prozess-Ausfuhrungsumgebungen oder Personalitaten. Unter anderem mit den Prozess-Ausfuhrungsumgebungen bestimmt der Kernel, wie er Signalnummern in Signale umsetzen soll. Dieses System ermoglicht Linux teilweise, fur andere UNIX-artige Systeme kompilierte Programme direkt laufen zu lassen. Falls Rolle nicht 0xffffffff ist, setzt personality() die Ausfuhrungsumgebung des Aufrufenden auf den durch Rolle angegebenen Wert. Wird Rolle als 0xffffffff angegeben, kann die aktuelle Rolle ermittelt werden, ohne sie zu andern. Eine Liste der verfugbaren Ausfuhrungsumgebungen kann in gefunden werden. Die Ausfuhrungsumgebung ist ein 32-Bit-Wert, in der die oberen drei Byte fur Schalter, die den Kernel zur Veranderung bestimmter Systemaufrufe bewegen, bereitgestellt werden, damit historische oder architekturale Besonderheiten emuliert werden. Das unterste Byte ist ein Wert, der die Personalitat 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 Adressspeicherlayoutverwurfelung 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. Nur bei 32-bit-Prozessen auf x86. FDPIC_FUNCPTRS (seit Linux 2.6.11) Funktionszeiger im Benutzeradressraum auf Signalbehandlungsroutinen zeigen (auf bestimmten Architekturen) auf Deskriptoren. Nur auf ARM mit BINFMT_ELF_FDPIC und SuperH. MMAP_PAGE_ZERO (seit Linux 2.4.0) Mappt Seite 0 als nur-lesbar (um Programme zu unterstutzen, die von diesem SVr4-Verhalten abhangen). READ_IMPLIES_EXEC (seit Linux 2.6.8) Wird dieser Schalter gesetzt, impliziert PROT_READ PROT_EXEC fur 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 zuruckgegebene Zeituberschreitungsargument nicht andern, wenn sie durch eine Signalbehandlungsroutine unterbrochen werden. UNAME26 (seit Linux 3.1) Lasst uname(2) eine Versionsnummer von 2.6.(40+x) statt MAJOR.x melden. Wurde als Uberbruckung hinzugefugt, um Anwendungen zu unterstutzen, 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 verfugbaren Ausfuhrungsumgebungen sind: PER_BSD (seit Linux 1.2.0) BSD. (Kein Effekt) PER_HPUX (seit Linux 2.4) Unterstutzung fur 32-Bit HP/UX. Diese Unterstutzung war nie vollstandig 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 Unterstutzung 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) uname(2) liefert den Namen der 32-bit-Architektur im Feld machine zuruck (>>i686<< anstatt >>x86_64<<, &c.). Unter ia64 (Itanium) wird bei Prozessen mit dieser Ausfuhrungsumgebung der Schalter O_LARGEFILE von open(2) nicht erzwungen. Unter 64-bit-ARM-Architekturen ist das Setzen dieser Prozess-Ausfuhrungsumgebung verboten, falls das execve(2)-ieren eines 32-bit-Prozesses ebenfalls verboten ist (siehe den Kernelparameter allow_mismatched_32bit_el0 und Documentation/arm64/asymmetric-32bit.rst). PER_LINUX32_3GB (seit Linux 2.4) Wie PER_LINUX32, aber impliziert ADDR_LIMIT_3GB. PER_LINUX_32BIT (seit Linux 2.0) Wie PER_LINUX, aber impliziert ADDR_LIMIT_32BIT. PER_LINUX_FDPIC (seit Linux 2.6.11) Wie PER_LINUX, aber impliziert FDPIC_FUNCPTRS. PER_OSF4 (seit Linux 2.4) OSF/1 v4. Kein Effekt seit Linux 6.1, wo die Unterstutzung fur a.out-Programme entfernt wurde. Davor wurden unter Alpha die oberen 32 bit von iov_len im Puffer des Benutzer zuruckgesetzt, um kompatibel zu alten Versionen von OSF/1 zu sein, bei denen iov_len als int definiert war. PER_OSR5 (seit Linux 2.4) SCO OpenServer 5. Impliziert STICKY_TIMEOUTS und WHOLE_SECONDS; ansonsten kein Effekt. PER_RISCOS (seit Linux 2.3.7; Makro seit Linux 2.3.13) Acorn RISC OS/Arthur (MIPS). Kein Effekt. Bis zu Linux v4.0 wurde die Emulation-Altroot auf /usr/gnemul/riscos gesetzt (siehe PER_SUNOS nachfolgend). Davor, bis zu Linux 2.6.3, nur Arthur-Emulation. PER_SCOSVR3 (seit Linux 1.2.0) SCO UNIX System V Release 3. Wie PER_OSR5, impliziert aber auch SHORT_INODE. PER_SOLARIS (seit Linux 2.4) Solaris. Impliziert STICKY_TIMEOUTS; ansonsten kein Effekt. PER_SUNOS (seit Linux 2.4.0) Sun OS. Wie PER_BSD, aber impliziert STICKY_TIMEOUTS. Vor Linux 2.6.26 wurden Bibliotheks- und dynamische Linker-Suchen nach /usr/gnemul umgelenkt. Fehlerhaft, grosstenteils nicht betreut und fast komplett unbenutzt. PER_SVR3 (seit Linux 1.2.0) AT&T UNIX System V Release 3. Impliziert STICKY_TIMEOUTS und SHORT_INODE; ansonsten kein Effekt. PER_SVR4 (seit Linux 1.2.0) AT&T UNIX System V Release 4. Impliziert STICKY_TIMEOUTS und MMAP_PAGE_ZERO; ansonsten kein Effekt. PER_UW7 (seit Linux 2.4) UnixWare 7. Impliziert STICKY_TIMEOUTS und MMAP_PAGE_ZERO; ansonsten kein Effekt. PER_WYSEV386 (seit Linux 1.2.0) WYSE UNIX System V/386. Impliziert STICKY_TIMEOUTS und SHORT_INODE; ansonsten kein Effekt. PER_XENIX (seit Linux 1.2.0) XENIX. Impliziert STICKY_TIMEOUTS und SHORT_INODE; ansonsten kein Effekt. RUCKGABEWERT Bei Erfolg wird die fruhere Rolle zuruckgegeben. Tritt ein Fehler auf, ist der Ruckgabewert -1 und errno wird gesetzt, um den Fehler anzuzeigen. FEHLER EINVAL Der Kernel konnte die Prozess-Ausfuhrungsumgebung nicht andern. STANDARDS Linux. GESCHICHTE Linux 1.1.20, Glibc 2.3. SIEHE AUCH setarch(8) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Hanno Wagner , Martin Eberhard Schauer , Chris Leick , Mario Blattermann und Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 personality(2)