Sous-routine sem_post

Objectif

Déverrouille un sémaphore.

Bibliothèque

Bibliothèque C standard (libc.a)

Syntaxe

#include <semaphore.h>

int sem_post (sem)
sem_t *sem;

Descriptif

La sous-routine sem_post déverrouille le sémaphore référencé par le paramètre sem en effectuant une opération de déverrouillage du sémaphore sur ce sémaphore.

Si la valeur de sémaphore résultant de cette opération est positive, aucune unité d'exécution n'a été bloquée en attendant que le sémaphore soit déverrouillé et la valeur de sémaphore est incrémentée.

Si la valeur du sémaphore résultant de cette opération est zéro, l'une des unités d'exécution bloquées en attente du sémaphore est autorisée à renvoyer avec succès son appel à la sous-routine sem_wait . Si l'option Planification du processus est prise en charge, l'unité d'exécution à débloquer est choisie en fonction des règles de planification et des paramètres en vigueur pour les unités d'exécution bloquées. Dans le cas des planificateurs SCHED_FIFO et SCHED_RR, l'unité d'exécution en attente dont la priorité est la plus élevée est débloquée, et s'il y a plusieurs unités d'exécution dont la priorité est la plus élevée qui attendent le sémaphore, l'unité d'exécution dont la priorité est la plus élevée qui a attendu le plus longtemps est débloquée. Si l'option Planification du processus n'est pas définie, le choix d'une unité d'exécution à débloquer n'est pas spécifié.

Si l'option Process Sporadic Server est prise en charge et que la règle de planification est SCHED_SPORADIQUE, la sémantique est identique à celle de SCHED_FIFO dans le paragraphe précédent.

La sous-routine sem_post est réentrante par rapport aux signaux et peut être appelée à partir d'une fonction d'interception de signal.

Paramètres

Article Descriptif
sem Indique le sémaphore à déverrouiller.

Valeurs renvoyées

En cas de réussite, la sous-routine sem_post renvoie zéro. Sinon, il renvoie -1 et met errno pour indiquer l'erreur.

Codes d'erreur

La sous-routine sem_post échoue si:
Article Descriptif
EACCES L'accès au sémaphore sans nom est refusé.
EFAULT Adresse utilisateur non valide.
EIDRM Le sémaphore a été supprimé lors de l'opération requise.
EINVAL Le paramètre sem ne fait pas référence à un sémaphore valide.
ENOMEM Mémoire insuffisante pour l'opération requise.
ENOTSUP Cette fonction n'est pas prise en charge avec les processus qui ont été des points de contrôle-restart'ed.