#ifndef _LOQUET_H_ #define _LOQUET_H_ #include #include typedef struct { int compteur; int nbAttenteLoquetOuvert; pthread_mutex_t mutex; sem_t attenteLoquetOuvert; } loquet_t; /* Initialisation d'un loquet (partageable seulement entre les threads d'un meme processus) a l'adresse pointee par loquet. L'argument value specifie la valeur initiale du loquet. Parametre loquet : Pointeur vers la zone memoire contenant toutes les donnees liees au loquet a initialiser Parametre value : Valeur initiale du loquet Valeur de retour : nouveauLoquet renvoie 0 en cas de succes; en cas d'erreur, -1 est retourne et errno est positionne pour indiquer l'erreur. */ int nouveauLoquet( loquet_t *loquet , u_int value ); /* Decremente le compteur associe a loquet pour indiquer qu'un evenement est survenu. Parametre loquet : Pointeur vers la zone memoire contenant toutes les donnees liees au loquet concerne Valeur de retour : nouveauLoquet renvoie 0 en cas de succes; en cas d'erreur, -1 est retourne et errno est positionne pour indiquer l'erreur. */ int decrementLoquet( loquet_t *loquet ); /* Attend que le compteur associe a loquet passe à zero (ce qui signifie que tous les evenements se sont passes). Si le compteur est non nul lorsqu'elle est appelee, la fonction attenteLoquet() se bloque jusqu'a ce que le compteur atteigne zero. Si le compteur est nul, attenteLoquet() retourne immediatement. Parametre loquet : Pointeur vers la zone memoire contenant toutes les donnees liees au loquet concerne Valeur de retour : nouveauLoquet renvoie 0 en cas de succes; en cas d'erreur, -1 est retourne et errno est positionne pour indiquer l'erreur. */ int attenteLoquet( loquet_t *loquet ); /* Detruit le loquet a l'adresse pointee par loquet. Parametre loquet : Pointeur vers la zone memoire contenant toutes les donnees liees au loquet concerne Valeur de retour : nouveauLoquet renvoie 0 en cas de succes; en cas d'erreur, -1 est retourne et errno est positionne pour indiquer l'erreur. */ int destructionLoquet( loquet_t *loquet ); #endif