*** empty log message ***
This commit is contained in:
parent
5c1111ac5d
commit
2a73a32e62
7 changed files with 133 additions and 24 deletions
|
@ -8,6 +8,12 @@
|
||||||
#define msgSpaceListId "/nzgSpaceList"
|
#define msgSpaceListId "/nzgSpaceList"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _NZG_REALFILEID
|
||||||
|
#define msgSpaceListSemId "/tmp/nzgSpaceListSem"
|
||||||
|
#else
|
||||||
|
#define msgSpaceListSemId "/nzgSpaceListSem"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* nzg_ids.c */
|
/* nzg_ids.c */
|
||||||
int msgSpaceIdIntern(msgSpaceId dest, const msgSpaceId src);
|
int msgSpaceIdIntern(msgSpaceId dest, const msgSpaceId src);
|
||||||
|
|
|
@ -145,7 +145,7 @@ msgSpace * msgSpaceCreate(
|
||||||
msgPoolDataTabClose(space,poolDataTabAddr);
|
msgPoolDataTabClose(space,poolDataTabAddr);
|
||||||
/* on ajoute spaceId a la liste des msgSpace connus */
|
/* on ajoute spaceId a la liste des msgSpace connus */
|
||||||
msgSpaceListElemId listElemId;
|
msgSpaceListElemId listElemId;
|
||||||
//TODO: msgSpaceListInit();
|
msgSpaceListInit();
|
||||||
msgSpaceListLock();
|
msgSpaceListLock();
|
||||||
msgSpaceListElemCreate(listElemId,space);
|
msgSpaceListElemCreate(listElemId,space);
|
||||||
msgSpaceListAdd(listElemId);
|
msgSpaceListAdd(listElemId);
|
||||||
|
|
14
src/spaceListClose.c
Normal file
14
src/spaceListClose.c
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
#include "libnazgul.h"
|
||||||
|
#include "ids.h"
|
||||||
|
|
||||||
|
int msgSpaceListClose(msgSpaceList * list){
|
||||||
|
|
||||||
|
if (munmap(list,sizeof(msgSpaceList)) < 0){
|
||||||
|
NZG_ERROR("unmap",msgSpaceListId);
|
||||||
|
goto ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
ERROR:
|
||||||
|
return -1;
|
||||||
|
}
|
18
src/spaceListElemClose.c
Normal file
18
src/spaceListElemClose.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
#include "libnazgul.h"
|
||||||
|
#include "ids.h"
|
||||||
|
|
||||||
|
int msgSpaceListElemClose(msgSpaceListElem * listElem)
|
||||||
|
{
|
||||||
|
|
||||||
|
msgSpaceListElemId eId;
|
||||||
|
strcpy(eId,listElem->id);
|
||||||
|
|
||||||
|
if (munmap(listElem,sizeof(msgSpaceListElem)) < 0){
|
||||||
|
NZG_ERROR("unmap",eId);
|
||||||
|
goto ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
ERROR:
|
||||||
|
return-1;
|
||||||
|
};
|
32
src/spaceListElemOpen.c
Normal file
32
src/spaceListElemOpen.c
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
#include "libnazgul.h"
|
||||||
|
#include "ids.h"
|
||||||
|
|
||||||
|
// cree un nouvel elemen
|
||||||
|
void * msgSpaceListElemOpen(msgSpaceListElemId listElemId){
|
||||||
|
int listElemFd;
|
||||||
|
void * listElemAddr;
|
||||||
|
|
||||||
|
listElemFd=shm_open(listElemId,O_RDWR,SHM_DEFAULT_MODE);
|
||||||
|
if (listElemFd == -1 ) {
|
||||||
|
NZG_ERROR("shm_open : msgSpaceList open",listElemId);
|
||||||
|
goto ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
listElemAddr=mmap(NULL,
|
||||||
|
sizeof(msgQueueElem),
|
||||||
|
PROT_READ|PROT_WRITE,
|
||||||
|
MAP_SHARED,
|
||||||
|
listElemFd,
|
||||||
|
0);
|
||||||
|
if( listElemAddr == MAP_FAILED ) {
|
||||||
|
NZG_ERROR("mmap",listElemId);
|
||||||
|
goto ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
close(listElemFd);
|
||||||
|
return listElemAddr;
|
||||||
|
ERROR:
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
|
@ -1,38 +1,47 @@
|
||||||
#include "libnazgul.h"
|
#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ée que s'il n'en existe pas deja un.
|
|
||||||
//
|
|
||||||
// crée également un sémaphore de gestion de liste
|
|
||||||
// a verouiller avant toute modification
|
|
||||||
int msgSpaceListInit(){
|
int msgSpaceListInit(){
|
||||||
int descMemory;
|
int descMemory;
|
||||||
sem_t * spacesListSemFd;
|
sem_t * spacesListSemFd;
|
||||||
msgSpaceListSemId spacesListSemId;
|
msgSpaceListSemId spacesListSemId;
|
||||||
msgSpaceListElemId spacesListId;
|
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*/
|
/*Creation de semaphore*/
|
||||||
spacesListSemFd=sem_open(spacesListSemId,O_CREAT|O_EXCL,0666,1024);
|
spacesListSemFd=sem_open(msgSpaceListSemId,O_CREAT|O_EXCL,0666,0);
|
||||||
if(spacesListSemFd==SEM_FAILED){
|
if(spacesListSemFd==SEM_FAILED){
|
||||||
NZG_ERROR("sem_open",spacesListSemId);
|
NZG_ERROR("sem_open",msgSpaceListSemId);
|
||||||
return -1;
|
goto ERROR;
|
||||||
}
|
}
|
||||||
/*Verouille le semaphore*/
|
|
||||||
if(sem_wait(spacesListSemFd)==-1){
|
|
||||||
NZG_ERROR("sem_wait",spacesListSemId);
|
|
||||||
return -1;
|
/*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;
|
return 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
30
src/spaceListOpen.c
Normal file
30
src/spaceListOpen.c
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
#include "libnazgul.h"
|
||||||
|
#include "ids.h"
|
||||||
|
|
||||||
|
void * msgSpaceListOpen(){
|
||||||
|
int listFd;
|
||||||
|
void * listAddr;
|
||||||
|
|
||||||
|
|
||||||
|
listFd=shm_open(msgSpaceListId,O_RDWR,SHM_DEFAULT_MODE);
|
||||||
|
if (listFd == -1 ) {
|
||||||
|
NZG_ERROR("shm_open : msgSpaceList open",msgSpaceListId);
|
||||||
|
goto ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
listAddr=mmap(NULL,
|
||||||
|
sizeof(msgSpaceList),
|
||||||
|
PROT_READ|PROT_WRITE,
|
||||||
|
MAP_SHARED,
|
||||||
|
listFd,
|
||||||
|
0);
|
||||||
|
if( listAddr == MAP_FAILED ) {
|
||||||
|
NZG_ERROR("mmap",msgSpaceListId);
|
||||||
|
goto ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
close(listFd);
|
||||||
|
return listAddr;
|
||||||
|
ERROR:
|
||||||
|
return NULL;
|
||||||
|
}
|
Loading…
Reference in a new issue