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éé. |