diff --git a/src/nzg_iface.h b/src/nzg_iface.h index 812e3bd..c72c3cb 100644 --- a/src/nzg_iface.h +++ b/src/nzg_iface.h @@ -8,6 +8,7 @@ typedef enum { true=1, false=0} bool; typedef char msgSpaceId[MSGSPACE_ID_LEN]; typedef char msgSpaceListId[4*MSGSPACE_ID_LEN]; +typedef char msgSpaceListSemId[4*MSGSPACE_ID_LEN]; typedef char msgSpaceListElemId[4*MSGSPACE_ID_LEN]; typedef char msgPoolDataTabId[4*MSGSPACE_ID_LEN]; diff --git a/src/nzg_spaceListInit.c b/src/nzg_spaceListInit.c index f292400..b9023aa 100644 --- a/src/nzg_spaceListInit.c +++ b/src/nzg_spaceListInit.c @@ -7,27 +7,29 @@ // // crée également un sémaphore de gestion de liste // a verouiller avant toute modification -int msgSpaceListInit(); - int msgSpaceListInit(){ int descMemory; - msgSpaceListElemId idList; -/*Fait un segment de memoir partager sur espace de listelement*/ - if( (descMemory=shm_open(idList,O_RDWR|O_CREAT|O_EXCL|O_TRUNC,0600))==-1){ - printf("Erreur de shmopen"); + sem_t * spacesListSemFd; + msgSpaceListSemId spacesListSemId; + msgSpaceListElemId spacesListId; + /*Fait un segment de memoir partager sur espace de listelement*/ + descMemory=shm_open(spacesListId,O_RDWR|O_CREAT|O_EXCL|O_TRUNC,0600); + if (descMemory == -1){ + NZG_ERROR("shm_open",spacesListId); + return -1; } /*Creation de semaphore*/ - sem=sem_open(spaceList,O_CREAT|O_EXCL,0666,1024); - if(sem==SEM_FAILED){ - printf("erreur de semaphore"); - return -1; + spacesListSemFd=sem_open(spacesListSemId,O_CREAT|O_EXCL,0666,1024); + if(spacesListSemFd==SEM_FAILED){ + NZG_ERROR("sem_open",spacesListSemId); + return -1; } /*Verouille le semaphore*/ - if(sem_wait(sem)==-1){ - printf("erreur pour l'ajout d'un semaphore"); + if(sem_wait(spacesListSemFd)==-1){ + NZG_ERROR("sem_wait",spacesListSemId); return -1; } diff --git a/src/nzg_spaceListLocking.c b/src/nzg_spaceListLocking.c index 0a85f00..4c6a176 100644 --- a/src/nzg_spaceListLocking.c +++ b/src/nzg_spaceListLocking.c @@ -4,36 +4,43 @@ // verouille le semaphore de la liste int msgSpaceListLock(){ + sem_t * spacesListSemFd; + msgSpaceListSemId spacesListSemId; - /*Ouverture d'un verrou d'un semafore*/ - sem=sem_open(spaceList,O_CREAT|O_EXCL,0666,1024); - if(sem==SEM_FAILED){ - printf("erreur de semaphore"); - 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(sem)==-1){ - printf("erreur pour l'ajout d'un semaphore"); - return -1; - } - return 0; + /*Pose d'un semafore et bloque*/ + if(sem_wait(spacesListSemFd)==-1){ + NZG_ERROR("sem_wait",spacesListSemId); + return -1; + } + return 0; } // deverouille le semaphore de la liste int msgSpaceListUnlock(){ - /* Ferme le semaphore*/ - if(sem_close(sem)==-1){ - printf("erreur sem_close"); - return -1; - } - /*semaphore non bloquant*/ - if (sem_trywait(sem)==-1){ - printf("erreur sem_trywait"); - return -1; - } - return 0; + 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; };