AvrIO
1.4.5
Bibliothèque C modulaire pour ATMEL AVR
|
Ce module regroupe les API permettant de gérer les sémaphores. Les sémaphores sont des compteurs permettant de gérer l'accès à des ressources partagées et de synchroniser des tâches.
Lorsqu'une tâche est en attente sur le sémaphore, le sémaphore est défini sur l'ID de tâche.
AVRX_PEND signifie que la ressource liée au sémaphore est occupée (Sem = 0) alors que AVRX_DONE signifie que la ressource est libre (Sem > 0). Une tâche bloquera seulement si elle tente de s'emparer d'un sémaphore à l'état AVRX_PEND.
Les sémaphores sont initialisées à l'état AVRX_PEND et sont laissés à l'état AVRX_PEND après chaque opération complète.
Les processus peuvent attendre qu'un sémaphore soit libre. Cela sera possible que si le sémaphore a été mis à AVRX_PEND avant le premier appel. Quand un processus a terminé avec le sémaphore, il le libère en le mettant à AVRX_PEND.
Fonctions | |
void | vAvrXIntSetSemaphore (xSem *pxSem) |
Libère un sémaphore si il n'est pas déjà libre (Mode noyau) Plus de détails... | |
void | vAvrXResetObjectSemaphore (xSem *pxSem) |
Force un sémaphore d'un objet à passer à l'état AVRX_PEND. Plus de détails... | |
void | vAvrXResetSemaphore (xSem *pxSem) |
Force un sémaphore à passer à l'état AVRX_PEND. Plus de détails... | |
void | vAvrXSetSemaphore (xSem *pxSem) |
Libère un sémaphore si il n'est pas déjà libre. Plus de détails... | |
void | vAvrXWaitSemaphore (xSem *pxSem) |
Mets une tâche en attente de libération d'un sémaphore. Plus de détails... | |
xSem | xAvrXIntTestSemaphore (xSem *pxSem) |
Renvoie l'état d'un sémaphore (Mode noyau) Plus de détails... | |
xSem | xAvrXTestSemaphore (xSem *pxSem) |
Renvoie l'état d'un sémaphore. Plus de détails... | |
Macros | |
#define | AVRX_DONE ((xSem)1) |
Ressource Libre, terminé ! | |
#define | AVRX_PEND ((xSem)0) |
Ressource Occupée ! revenir plus tard ... | |
#define | AVRX_WAIT ((xSem)2) |
Une ou plusieurs tâches sont en attente de libération de la ressource. | |
Définitions de type | |
typedef xPid | xSem |
Compteurs permettant de gérer l'accès à des ressources partagées. Plus de détails... | |
Compteurs permettant de gérer l'accès à des ressources partagées.
Les sémaphores sont des compteurs permettant de gérer l'accès à des ressources partagées.
Dans AvrX :
void vAvrXIntSetSemaphore | ( | xSem * | pxSem | ) |
Libère un sémaphore si il n'est pas déjà libre (Mode noyau)
Identique à vAvrXSetSemaphore() pour une utilisation en mode noyau.
pxSem | Pointeur sur le semaphore |
void vAvrXResetObjectSemaphore | ( | xSem * | pxSem | ) |
Force un sémaphore d'un objet à passer à l'état AVRX_PEND.
pxSem | Pointeur sur le semaphore |
void vAvrXResetSemaphore | ( | xSem * | pxSem | ) |
Force un sémaphore à passer à l'état AVRX_PEND.
pxSem | Pointeur sur le semaphore |
void vAvrXSetSemaphore | ( | xSem * | pxSem | ) |
Libère un sémaphore si il n'est pas déjà libre.
Si sémaphore est à l'état AVRX_PEND ou AVRX_DONE, passe à l'état AVRX_DONE.
Si une tâche est en attente, l'exécute et passe le sémaphore à l'état AVRX_PEND.
pxSem | Pointeur sur le semaphore |
void vAvrXWaitSemaphore | ( | xSem * | pxSem | ) |
Mets une tâche en attente de libération d'un sémaphore.
S'il est utilisé pour à des fins de signalisation, une seule tâche doit attendre la libération du sémaphore.
pxSem | Pointeur sur le semaphore |
Renvoie l'état d'un sémaphore (Mode noyau)
Identique à xAvrXTestSemaphore() pour une utilisation en mode noyau.
pxSem | Pointeur sur le semaphore |