#include "libnazgul.h" // verouille le semaphore de la liste int msgSpaceListLock() { sem_t *msgSpaceListSemFd; msgSpaceListSemId spaceListSemId; strcpy(spaceListSemId, DEFAULT_MSGSPACELISTSEMID); /* Ouverture d'un semafore */ msgSpaceListSemFd = sem_open(spaceListSemId, O_CREAT, 0666, 1); if (msgSpaceListSemFd == SEM_FAILED) { NZG_ERROR("sem_open", spaceListSemId); goto ERROR; } /* Pose d'un semaphore et le verrouille */ if (sem_wait(msgSpaceListSemFd) == -1) { NZG_ERROR("sem_wait", spaceListSemId); goto ERROR; } /* Ferme le semaphore */ /* if(sem_close(msgSpaceListSemFd)==-1){ NZG_ERROR("sem_close",spaceListSemId); return -1; } */ sem_close(msgSpaceListSemFd); return 0; ERROR: return -1; } // deverouille le semaphore de la liste int msgSpaceListUnlock() { sem_t *msgSpaceListSemFd; msgSpaceListSemId spaceListSemId; strcpy(spaceListSemId, DEFAULT_MSGSPACELISTSEMID); /*Ouverture dun semaphore */ msgSpaceListSemFd = sem_open(spaceListSemId, O_CREAT, 0666, 0); if (msgSpaceListSemFd == SEM_FAILED) { NZG_ERROR("sem_open", spaceListSemId); goto ERROR; } /*Relachement du semaphore */ if (sem_post(msgSpaceListSemFd) == -1) { NZG_ERROR("sem_relache", spaceListSemId); goto ERROR; } /* Ferme le semaphore */ if (sem_close(msgSpaceListSemFd) == -1) { NZG_ERROR("sem_close", spaceListSemId); goto ERROR; } return 0; ERROR: return -1; };