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

#include <sys/ukeys.h>

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.

Anmerkung: Eine Hinzufügeoperation eines Schlüssels (oder Schlüsselsatzes) und anschließend eine nachfolgende Entfernungsoperation desselben Schlüssels (oder Schlüsselsatzes) führen möglicherweise nicht zu dem ursprünglichen Schlüsselsatz. Wenn beispielsweise ein Schlüssel bereits in einem Schlüsselsatz vorhanden ist, hat das Hinzufügen desselben Schlüssels keine Auswirkung auf den Schlüsselsatz, aber eine nachfolgende Operation zum Löschen eines Schlüssels führt zu einem neuen Schlüsselsatz ohne den entfernten Schlüssel.

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:
  • UK_READ (UK) -Gibt an, ob der Lesezugriff für einen Schlüssel hinzugefügt oder entfernt wird.
  • UK_WRITE -Gibt an, dass der Schreibzugriff für einen Schlüssel hinzugefügt oder entfernt wird
  • UK_W -Gibt an, ob Lese-und Schreibzugriff hinzugefügt oder entfernt werden sollen

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.