Service de noyau lockl

Objectif

Verrouillage d'un verrou de processus classique.

Syntaxe

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/lockl.h>
int lockl ( lock_word,  flags)
lock_t *lock_word;
int flags;

Paramètres

Article Descriptif
Mot verrou Indique l'adresse du mot de verrouillage.
Flags Indique les indicateurs qui contrôlent l'attente d'un verrou. Le paramètre Indicateurs est utilisé pour contrôler la façon dont les signaux affectent l'attente d'un verrou. Les quatre indicateurs sont les suivants:
LOCK_NDELAY
Contrôle si l'appelant attend le verrou. La définition de l'indicateur entraîne l'arrêt de la demande. Le verrou est affecté à l'appelant. Si vous ne définissez pas l'indicateur, l'appelant doit attendre que le verrou ne soit pas détenu par un autre processus avant que le verrou ne soit affecté à l'appelant.
LOCK_SHORT
Empêche les signaux de mettre fin à l'attente pour le verrou. LOCK_SHORT est l'indicateur par défaut pour le service de noyau lockl . Ce drapeau provoque un sommeil non-préemptif.
LOCK_SIGRET
Entraîne l'arrêt du verrou par un signal non masqué.
LOCK_SIGWAKE
Provoque l'attente de l'arrêt du verrou par un signal et un contrôle non masqués transférés au retour de la dernière opération par le service de noyau setjmpx .
Remarque: L'indicateur LOCK_SIGRET remplace l'indicateur LOCK_SIGWAKE .

Descriptif

Remarque: Le service de noyau lockl est fourni à des fins de compatibilité uniquement et ne doit pas être utilisé dans un nouveau code, qui doit à la place utiliser des verrous simples ou des verrous complexes.

Le service de noyau lockl verrouille un verrou classique

Le mot de verrouillage peut se trouver dans la mémoire partagée. Il doit se trouver dans l'espace adresse du processus lorsque les services lockl ou unlockl sont appelés. Le noyau accède au mot de verrouillage uniquement lors de l'exécution sous le processus de l'appelant.

Le paramètre Mot clé lock_word fait généralement partie de la structure de données qui décrit la ressource gérée par le verrou. Ce paramètre doit être initialisé avec la valeur LOCK_AVAIL avant le premier appel au service lockl . Seuls les services lockl et unlockl peuvent modifier ce paramètre lorsque le verrou est en cours d'utilisation.

Le service lockl peut être imbriquée. L'appelant doit utiliser la valeur LOCK_SUCC pour déterminer quand appeler le service unlockl afin de déverrouiller le verrou conventionnel.

Le service lockl affecte temporairement au propriétaire la priorité de processus de l'unité en attente la plus favorisée pour le verrouillage.

Un processus doit libérer tous les verrous avant de terminer ou de quitter le mode noyau. Les signaux ne sont pas livrés aux processus du noyau pendant que ces processus possèdent un verrou. Présentation de l'exécution des appels système dans Kernel Extensions and Device Support Programming Concepts explique comment les appels système peuvent utiliser le service lockl lors de l'accès à des données globales.

Environnement d'exécution

Le service de noyau lockl ne peut être appelé qu'à partir de l' environnement de processus .

Valeurs renvoyées

Article Descriptif
LOCK_SUCC Indique que le processus ne possède pas déjà le verrou ou que ce dernier n'appartient pas à un autre processus lorsque le paramètre flags est défini sur LOCK_NDELAY.
CLASSE_VERROUILLAGE Indique que le processus possède déjà le verrou ou que le verrou n'est pas détenu par un autre processus lorsque le paramètre Indicateurs est défini sur LOCK_NDELAY.
ECHEC DE LOCK_FAIL Indique que le verrou appartient à un autre processus lorsque le paramètre Indicateurs est défini sur LOCK_NDELAY.
SIG. LOCK_SIG Indique que l'attente est arrêtée par un signal lorsque le paramètre Indicateurs est défini sur LOCK_SIGRET.