l3.libnazgul/src/nzg_spaceListLocking.c
2020-03-03 23:46:32 +01:00

65 lines
1.3 KiB
C

#include "libnazgul.h"
// verouille le semaphore de la liste
int msgSpaceListLock(){
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;
}
/*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;
/*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;
};