AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR

Description détaillée

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.

Graphe de collaboration de Sémaphores:

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

Documentation des définitions de type

typedef xPid xSem

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 :

  • Les sémaphores xSem sont implémentés sous la forme d'une liste chaînée simple des tâches en attente.
  • Un sémaphore peut avoir une des valeurs ci-dessous :
    • AVRX_PEND Le sémaphore est occupé en attente d'un événement
    • AVRX_DONE Le sémaphore a été libéré
    • AVRX_WAIT ??
    • Toute autre valeur est l'adresse d'un xProcess

Définition à la ligne 221 du fichier avrx.h.

Documentation des fonctions

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.

Paramètres
pxSemPointeur sur le semaphore
Avertissement
Ne peut être appelée qu'à partir du mode noyau AvrX (par exemple l'intérieur d'un gestionnaire d'interruption).
void vAvrXResetObjectSemaphore ( xSem pxSem)

Force un sémaphore d'un objet à passer à l'état AVRX_PEND.

Paramètres
pxSemPointeur sur le semaphore
void vAvrXResetSemaphore ( xSem pxSem)

Force un sémaphore à passer à l'état AVRX_PEND.

Paramètres
pxSemPointeur 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.

Paramètres
pxSemPointeur sur le semaphore
Exemples:
avrx/tutorial2/demo_avrx_tuto2.c.
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.

Paramètres
pxSemPointeur sur le semaphore
Exemples:
avrx/tutorial2/demo_avrx_tuto2.c.
xSem xAvrXIntTestSemaphore ( xSem pxSem)

Renvoie l'état d'un sémaphore (Mode noyau)

Identique à xAvrXTestSemaphore() pour une utilisation en mode noyau.

Paramètres
pxSemPointeur sur le semaphore
Renvoie
AVRX_PEND, AVRX_DONE ou AVRX_WAIT
Avertissement
Ne peut être appelée qu'à partir du mode noyau AvrX (par exemple l'intérieur d'un gestionnaire d'interruption).
xSem xAvrXTestSemaphore ( xSem pxSem)

Renvoie l'état d'un sémaphore.

Paramètres
pxSemPointeur sur le semaphore
Renvoie
AVRX_PEND, AVRX_DONE ou AVRX_WAIT