Sous-routine msem_init

Objectif

Initialise un sémaphore dans un fichier mappé ou une région de mémoire partagée.

Bibliothèque

Bibliothèque C standard (libc.a)

Syntaxe

#include <sys/mman.h>
msemaphore *msem_init ( Sem InitialValue)
msemaphore *Sem;
int InitialValue;

Descriptif

La sous-routine Init. Msem_init alloue un nouveau sémaphore binaire et initialise l'état du nouveau sémaphore.

Si la valeur du paramètre InitialValue est MSEM_LOCKED, le nouveau sémaphore est initialisé à l'état verrouillé. Si la valeur du paramètre InitialValue est MSEM_UNLOCKED, le nouveau sémaphore est initialisé à l'état déverrouillé.

La structure Msémaphore se trouve dans un fichier mappé ou une région de mémoire partagée créée par un appel réussi à la sous-routine Mmap et ayant à la fois un accès en lecture et en écriture.

Qu'un sémaphore soit créé dans un fichier mappé ou dans une région de mémoire partagée anonyme, toute référence par un processus qui a mappé le même fichier ou la même région partagée, à l'aide d'un pointeur de structure Msémaphore résolu au même fichier ou au même début de décalage de région, est prise comme référence au même sémaphore.

Tout état de sémaphore précédent stocké dans la structure Msémaphore est ignoré et remplacé.

Paramètres

Article Descriptif
Sem Pointe vers une structure Msémaphore dans laquelle l'état du sémaphore est stocké.
Valeur initiale Détermine si le sémaphore est verrouillé ou déverrouillé lors de l'allocation.

Valeurs renvoyées

Lorsqu'elle aboutit, la sous-routine Init. Msem_init renvoie un pointeur vers la structure Msémaphore initialisée. Sinon, elle renvoie une valeur NULL et définit la variable globale Errno pour indiquer l'erreur.

Codes d'erreur

Si la sous-routine Init. Msem_init échoue, la variable globale Errno est définie sur l'une des valeurs suivantes:

Article Descriptif
EINVAL Indique que le paramètre InitialValue n'est pas valide.
ENOMEM Indique qu'un nouveau sémaphore n'a pas pu être créé.