ukeyset_add_key, ukeyset_remove_key, ukeyset_add_set oder ukeyset_remove_set Subroutine
Zweck
Bearbeitet und ändert einen Benutzerschlüsselsatz.
Bibliothek
Standard-C-Bibliothek (libc.a)
Syntax
int ukeyset_add_key (uset, key, flags)
ukeyset_t * uset;
ukey_t key;
unsigned int flags;
int ukeyset_remove_key (uset, key, flags)
ukeyset_t * uset;
ukey_t key;
unsigned int flags;
int ukeyset_add_set (uset, aset)
ukeyset_t * uset;
ukeyset_t aset;
int ukeyset_remove_set (uset, rset)
ukeyset_t * uset;
ukeyset_t rset;
Beschreibung
Diese Subroutinen bearbeiten und modifizieren Benutzerschlüsselsätze. Der Benutzerschlüsselsatz muss ursprünglich mit der Subroutine ukeyset_init initialisiert worden sein.
Einzelne oder Gruppen (Gruppen) von Benutzerschlüsseln können hinzugefügt oder entfernt werden. Wenn ein einzelner Schlüssel hinzugefügt oder entfernt wird, müssen die Zugriffe (Lesen oder Schreiben oder Lesen und Schreiben), die hinzugefügt oder entfernt werden, über den Parameter Flags angegeben werden. Beim Hinzufügen oder Entfernen von Benutzerschlüsselsätzen ist keine Spezifikation erforderlich, da ein Schlüsselsatz nicht nur Informationen darüber enthält, welche Schlüssel aktiviert sind, sondern auch Informationen darüber, welche spezifischen Zugriffsberechtigungen für jeden dieser Schlüssel aktiviert sind.
Die Subroutine ukeyset_add_key fügt den im Parameter Schlüssel angegebenen Benutzerschlüssel mit Zugriffen, wie durch den Parameter Flags angegeben, zu dem im Parameter USet angegebenen Benutzerschlüsselsatz hinzu. Die Subroutine ukeyset_remove_key entfernt die Zugriffe, die durch den Parameter Flags des im Parameter Schlüssel angegebenen Schlüssels angegeben sind, aus dem Benutzerschlüsselsatz, der durch den Parameter USet angegeben wird. Die Subroutine ukeyset_add_set fügt die Schlüssel und Zugriffe, die durch den Schlüsselsatzparameter ASet angegeben werden, dem Benutzerschlüsselsatz hinzu, der durch den Parameter USet angegeben wird. Die Subroutine ukeyset_remove_set entfernt die mit dem Schlüsselsatzparameter RSet angegebenen Schlüssel und Zugriffe aus dem mit dem Parameter USet angegebenen Benutzerschlüsselsatz.
Der Versuch, einen definierten Benutzerschlüssel zu entfernen, der im Quellenschlüsselsatz nicht vorhanden ist, wird auf ähnliche Weise wie die Signalsatzservices ignoriert.
Diese Subroutinen schlagen fehl, wenn die Subroutine ukey_enable nicht bereits erfolgreich von einem Thread im Prozess ausgeführt wurde. Weitere Details finden Sie im Artikel zu Speicherschutzschlüsseln .
Parameter
| Element | Beschreibung |
|---|---|
| USet | Benutzerschlüsselsatz, der geändert werden soll |
| rset | Zu entfernender Benutzerschlüsselsatz. |
| ASet | Benutzerschlüsselsatz zum Hinzufügen. |
| key | Benutzerschlüssel zum Hinzufügen oder Entfernen aus einem Schlüsselsatz. Dieser Parameter wird mit Lese-oder Schreibflags kombiniert, wenn Operationen zum Hinzufügen oder Entfernen ausgeführt werden. |
| Flags | Die folgenden Flags sind für die Services ukeyset_add_key () und ukeyset_remove_key () definiert:
|
Rückgabewerte
Bei erfolgreicher Ausführung geben die Benutzerschlüsselsatzsubroutinen den Wert 0 zurück. Andernfalls geben sie den Wert -1 zurück und setzen die globale Variable errno, um den Fehler anzuzeigen.
Fehlercodes
Die Subroutinen ukeyset_add_key und ukeyset_remove_key sind nicht erfolgreich, wenn Folgendes zutrifft:
| Element | Beschreibung |
|---|---|
| EINVAL | Ungültiger Parameter Flags , ungültiger Schlüsselsatz im Parameter USet oder ungültige (nicht definierte) Schlüssel im Parameter Schlüssel . |
| ENOSYS | Der im Parameter Schlüssel angegebene nicht konfigurierte (nicht verfügbare) private Schlüssel oder der Prozess ist nicht für den Benutzerschlüssel aktiviert. |
Die Subroutinen ukeyset_add_set, ukeyset_remove_set, ukeyset_add_set und ukeyset_remove_set sind nicht erfolgreich, wenn die folgenden Bedingungen zutreffen:
| Element | Beschreibung |
|---|---|
| EINVAL | Ungültiger Schlüsselsatz im Parameter USet , RSet oder ASet angegeben. |
| ENOSYS | Prozess ist nicht für Benutzerschlüssel aktiviert. |
Nur die Subroutinen, die Schlüssel (anstelle von Schlüsselsätzen) zum Hinzufügen oder Entfernen verwenden, können aufgrund einer ungültigen oder nicht verwendeten Schlüsselnummer oder ungültiger Zugriffsmarkierungen fehlschlagen.