l3.libnazgul/src/spaceListInit.c

39 lines
1,019 B
C
Raw Normal View History

2004-02-22 22:32:15 +00:00
#include "libnazgul.h"
// fonction pour la creation d'une liste de msgSpace
// cree un shm qui connait l'element de debut de liste
// et l'element de fin de liste.
// il ne se cr<63>e que s'il n'en existe pas deja un.
//
// cr<63>e <20>galement un s<>maphore de gestion de liste
// a verouiller avant toute modification
int msgSpaceListInit(){
int descMemory;
2004-02-22 22:46:09 +00:00
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;
2004-02-22 22:32:15 +00:00
}
/*Creation de semaphore*/
2004-02-22 22:46:09 +00:00
spacesListSemFd=sem_open(spacesListSemId,O_CREAT|O_EXCL,0666,1024);
if(spacesListSemFd==SEM_FAILED){
NZG_ERROR("sem_open",spacesListSemId);
return -1;
2004-02-22 22:32:15 +00:00
}
/*Verouille le semaphore*/
2004-02-22 22:46:09 +00:00
if(sem_wait(spacesListSemFd)==-1){
NZG_ERROR("sem_wait",spacesListSemId);
2004-02-22 22:32:15 +00:00
return -1;
}
return 0;
};