ukey_enable (Subroutine)
Zweck
Aktiviert Benutzerschlüssel in einem Prozess.
Bibliothek
Standard-C-Bibliothek (libc.a)
Syntax
int ukey_enable (void)
Beschreibung
- Ausführung mit dem 64-Bit-Kernel. Benutzerschlüssel werden im 32-Bit-Kernel nicht unterstützt.
- Die Ausführung auf Hardware, die Speicherschlüssel und Benutzerschlüssel unterstützt, wurde nicht explizit inaktiviert. Benutzerschlüssel sind standardmäßig aktiviert, wenn sie von der Plattform unterstützt werden. Die Unterroutine sysconf (_SC_AIX_UKEYS) gibt die Anzahl der verfügbaren User-Keys zurück.
- Bei Multithread-Prozessen muss der Prozess im Systembereich ausgeführt werden, z. B. im 1:1-Modus.
- Prozess ist nicht checkpoint-fähig für Load Leveler dispatched Jobs.
Alle Threads eines Prozesses mit aktivem Benutzerschlüssel werden anfangs mit einem aktiven Benutzerschlüssel-Set eingerichtet, das nur Lese- und Schreibzugriff auf Speicherseiten erlaubt, die dem Standard-Benutzerschlüssel UKEY_PUBLIC zugewiesen wurden. Einzelne Threads können ihren aktiven Benutzerschlüsselsatz ändern, indem sie Benutzerschlüssel-APIs aufrufen, um Benutzerschlüsselsätze zu erstellen und aktivieren.
Signalkontext für User-Key-aktivierte Prozesse:
Der Standardsignalkontext für einen für Benutzerschlüssel aktivierten Prozess wird für alle zukünftigen empfangenen Signale geändert. Die Struktur ucontext_t wird um den aktiven User-Key-Satz des unterbrochenen Threads erweitert. Dies wird für Signalhandler bereitgestellt.
Die folgenden Felder sind festgelegt:
ucontext_t.__extctx.__flags |= __EXTCTX_UKEYS
ucontext_t.__extctx.__ukeys[2] = active user-key-set Der erweiterte Benutzerschlüsselkontext ist vom VMX-Kontext unabhängig und wurde für alle Prozesse erstellt, die für Benutzerschlüssel aktiviert sind.
Wenn eine Speicherschlüsselausnahme vorliegt, wird das Feld Ausnahmetyp gesetzt, um dies im erweiterten Kontext anzuzeigen:
ucontext_t.uc_mcontext.jmp_context.excp_type = EXCEPT_SKEY. In der Header-Datei sys/context.h finden Sie ein detailliertes Layout der erweiterten Kontextinformationen.
Rückgabewerte
Bei Erfolg gibt das Unterprogramm ukey_enable die Anzahl der verfügbaren Benutzerschlüssel zurück. Andernfalls gibt es den Wert -1 zurück und setzt die globale Variable errno, um den Fehler anzuzeigen.
Fehlercodes
| Element | Beschreibung |
|---|---|
| ENOSYS | Benutzerschlüssel werden nicht unterstützt. |
Zugehörige Informationen
Die Unterroutine ukey_setjmp.
Die Unterroutine ukeyset_init.
Die Unterroutine ukeyset_add_key, ukeyset_remove_key, ukeyset_add_set, ukeyset_remove_set.
Die Unterroutine ukeyset_activate.
Die Unterroutine ukeyset_ismember.
Die Unterroutine pthread_attr_getukeyset_np oder pthread_attr_setukeyset_np.
AIX® Vektorielle Programmierung inAllgemeine Programmierkonzepte: Programme schreiben und debuggen.