PR_SET_FP_MODE(2const)

BEZEICHNUNG
PR_SET_FP_MODE - Setzt den Fließkommamodus des aufrufenden Prozesses

BIBLIOTHEK
Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT
#include <linux/prctl.h>  /* Definition der PR_*-Konstanten */
#include <sys/prctl.h>

int prctl(PR_SET_FP_MODE, unsigned long Modus);

BESCHREIBUNG
Auf der MIPS-Architektur kann der Anwendungsraum-Code mittels einer ABI gebaut werden, die das Linken mit Code erlaubt, der strengere Anforderungen an die Fließkommazahlen (FP) hat. Beispielsweise kann Anwendungsraum-Code mit Ziel der O32-FPXX-ABI gebaut und mit Code gelinkt werden, der für eine der restriktiveren FP32- oder FP64-ABIs gebaut wurde. Wird der restriktivere Code gelinkt, gilt für den Prozess insgesamt der restriktivere Fließkommazahlmodus.

Da der Kernel nicht im voraus wissen kann, in welchem Modus der Prozess ausgeführt werden soll und da sich diese Anforderungen während der Lebensdauer des Prozesses ändern können, wird die Aktion PR_SET_FP_MODE bereitgestellt, um die Steuerung des Fließkommamodus vom Anwendungsraum zu erlauben.

Das Argument Modus ist eine Bitmaske, die den verwandten Fließkommamodus beschreibt:

PR_FP_MODE_FR
    Wenn dieses Bit nicht gesetzt ist (der sogenannte Modus FR=0 oder FR0), sind die 32 Fließkommaregister 32 bit weit und 64-bit-Register werden als Paar von Registern dargestellt (gerade und ungerade nummeriert, wobei das gerade nummerierte Register die niedrigeren 32 bit enthält und das ungerade nummerierte Register die höheren 32 bit enthält).

    Wenn dieses Bit gesetzt ist (auf unterstützter Hardware), sind die 32 Fließkommaregister 64 bit weit (der sogenannte Modus FR=1 oder FR1). Beachten Sie, dass moderne MIPS-Implementierungen (MIPS R6 und neuer) nur den Modus FR=1 unterstützen.

    Anwendungen, die die O32-FP32-ABI verwenden, können nur betrieben werden, wenn dieses Bit nicht gesetzt ist (FR=0; oder sie können wie unten beschrieben mit aktiviertem FRE verwandt werden). Anwendungen, die die O32-FP64-ABI (oder die O32-FP64A-ABI, die existiert, damit mit bestehendem FP32-Code Ausführungen möglich sind, wie unten beschrieben) verwenden, können nur ausgeführt werden, wenn dieses Bit gesetzt (FR=1) ist. Anwendungen, die die O32-FPXX-ABI verwenden, können sowohl mit FR=0 als auch mit FR=1 betrieben werden.

PR_FP_MODE_FRE
    Aktiviert die Emulation des 32-bit-Fließkommazahlmodus. Wenn dieser Modus aktiviert wird, emuliert er 32-bit-Fließkommazahloperationen, indem eine reservierte Ausnahmebehandlungsanweisung bei jeder Anweisung ausgelöst wird, die 32-bit-Formate verwendet und der Kernel handhabt die Anweisung in Software. (Das Problem liegt in der Diskrepanz der Handhabung der ungerade nummerierten Register, die die hohen 32 bit der 64-bit-Register mit geraden Zahlen im Modus FR=0 und den niedrigen 32-bit-Anteilen der ungerade nummerierten 64-bit-Register im Modus FR=1 sind.) Die Aktivierung dieses Bits ist notwendig, wenn Code mit der O32-FP32-ABI zusammen mit Code betrieben werden soll, der mit der O32-FPXX- oder der O32-FP64A-ABI kompatibel ist (die den FPU-Modus FR=1 benötigen) oder wenn er auf neuerer Hardware (ab MIPS R6) ausgeführt werden soll, bei der die Unterstützung für den Modus FR=0 fehlt, wenn ein Programm mit der FP32-ABI verwandt wird.

    Beachten Sie, dass dieser Modus nur sinnvoll ist, wenn sich die FPU im 64-bit-Modus (FR=1) befindet.

    Beachten Sie, dass die Verwendung der Emulation einen merklichen Leistungseinbruch erzeugt und wenn möglich vermieden werden sollte.

Im ABI N32/N64 wird der 64-bit-Fließkommazahlmodus immer verwandt, so dass die FPU-Emulation nicht notwendig ist und die FPU immer im Modus FR=1 betrieben wird.

Diese Aktion ist hauptsächlich für die Verwendung durch den dynamischen Linker (ld.so(8)) gedacht.

RÜCKGABEWERT
Bei Erfolg wird 0 zurückgegeben. Bei einem Fehler wird -1 zurückgegeben und errno gesetzt, um den Fehler anzuzeigen.

FEHLER

EOPNOTSUPP
    Modus hat einen ungültigen oder nicht unterstützten Wert.

STANDARDS
Linux. Nur MIPS.

GESCHICHTE
Linux 4.0 (MIPS).

SIEHE AUCH
prctl(2), PR_GET_FP_MODE(2const)

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) 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 (debian-l10n-german@lists.debian.org).