diff --git a/src/nzg_spaceListLocking.c b/src/nzg_spaceListLocking.c index 4c6a176..cb9b9b6 100644 --- a/src/nzg_spaceListLocking.c +++ b/src/nzg_spaceListLocking.c @@ -4,43 +4,61 @@ // verouille le semaphore de la liste int msgSpaceListLock(){ - sem_t * spacesListSemFd; - msgSpaceListSemId spacesListSemId; + sem_t * spacesListSemFd; + msgSpaceListSemId spacesListSemId; - /*Ouverture d'un verrou d'un semafore*/ - //TODO: remplacer par la bonne valeur d'initialisation du - //semaphore - spacesListSemFd=sem_open(spacesListSemId,O_CREAT|O_EXCL,0666,1024); - if(spacesListSemFd==SEM_FAILED){ - NZG_ERROR("sem_open",spacesListSemId); - return -1; - } + /*Ouverture d'un verrou d'un semafore*/ + //TODO: remplacer par la bonne valeur d'initialisation du + //semaphore + spacesListSemFd=sem_open(spacesListSemId,O_CREAT|O_EXCL,0666,1024); + if(spacesListSemFd==SEM_FAILED){ + NZG_ERROR("sem_open",spacesListSemId); + return -1; + } - /*Pose d'un semafore et bloque*/ - if(sem_wait(spacesListSemFd)==-1){ - NZG_ERROR("sem_wait",spacesListSemId); - return -1; - } - return 0; + /*Pose d'un semaphore et le verrouille*/ + if(sem_wait(spacesListSemFd)==-1){ + NZG_ERROR("sem_wait",spacesListSemId); + return -1; + } + /* Ferme le semaphore*/ + if(sem_close(spacesListSemFd)==-1){ + NZG_ERROR("sem_close",spacesListSemId); + return -1; + } + + return 0; } // deverouille le semaphore de la liste int msgSpaceListUnlock(){ - sem_t * spacesListSemFd; - msgSpaceListSemId spacesListSemId; - - /* Ferme le semaphore*/ - if(sem_close(spacesListSemFd)==-1){ - NZG_ERROR("sem_close",spacesListSemId); - return -1; - } - /*semaphore non bloquant*/ - if (sem_trywait(spacesListSemFd)==-1){ - NZG_ERROR("sem_trywait",spacesListSemId); - return -1; - } - return 0; + sem_t * spacesListSemFd; + msgSpaceListSemId spacesListSemId; + + /*Ouverture dun semaphore*/ + spacesListSemFd=sem_open(spacesListSemId,O_CREAT|O_EXCL,0666,1024); + if(spacesListSemFd==SEM_FAILED){ + NZG_ERROR("sem_open",spacesListSemId); + return -1; + } + + + /*Relachement du semaphore*/ + if(sem_post(spacesListSemFd)==-1){ + NZG_ERROR("sem_relache",spacesListSemId); + return -1; + } + + + /* Ferme le semaphore*/ + if(sem_close(spacesListSemFd)==-1){ + NZG_ERROR("sem_close",spacesListSemId); + return -1; + } + + + return 0; };