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