#include "libnazgul.h" int msgSpaceListInit(){ int descMemory; sem_t * spacesListSemFd; msgSpaceListSemId spacesListSemId; msgSpaceListElemId spacesListId; /*Creation de semaphore*/ spacesListSemFd=sem_open(msgSpaceListSemId,O_CREAT|O_EXCL,0666,0); if(spacesListSemFd==SEM_FAILED){ NZG_ERROR("sem_open",msgSpaceListSemId); goto ERROR; } /*Fait un segment de memoir partager sur espace de listelement*/ descMemory=shm_open(msgSpaceListId,O_RDWR|O_CREAT|O_EXCL|O_TRUNC,0600); if (descMemory == -1){ descMemory=shm_open(msgSpaceListId,O_RDWR|O_TRUNC,0600); if (descMemory == -1){ NZG_ERROR("shm_open",spacesListId); goto ERROR; } else { close(descMemory); goto EXISTING; } } /*Creation de semaphore*/ spacesListSemFd=sem_open(spacesListSemId,O_CREAT|O_EXCL,0666,0); if(spacesListSemFd==SEM_FAILED){ NZG_ERROR("sem_open",spacesListSemId); goto ERROR; } msgSpaceListUnlock(); return 0; ERROR: return -1; EXISTING: return 0; };