diff --git a/src/nzg_create.c b/src/nzg_create.c index de2a9c7..67120dd 100644 --- a/src/nzg_create.c +++ b/src/nzg_create.c @@ -4,7 +4,7 @@ #include #include /* pour O_RDWR */ #include -#include +#include /* shm_open */ #include "nzg_iface.h" #include "nzg_proto.h" @@ -21,15 +21,10 @@ msgSpace * msgSpaceCreate( int poolNb, // nombre de pool de buffers msgPool * queueNbCar // tableau de caracteristiques des different pool ){ - + int shmId; printf("PAGESIZE : %d\n",(int)PAGESIZE); // on créee - char * nzgId; - int slen; - int shmId; - slen=strlen(spaceId); - nzgId = (char *)malloc(sizeof(char)*(slen+4)); - sprintf(nzgId,"/NZG%s",spaceId); + msgSpaceId nzgId=msgSp2nzgId(spaceId); if ((shmId=shm_open(nzgId,O_RDWR,MSGSPACE_DEFAULT_MODE)) < 0){ perror("shm_open"); return NULL; @@ -52,12 +47,8 @@ msgSpace * msgSpaceCreate( msgSpace * msgSpaceOpen(msgSpaceId spaceId){ - char * nzgId; - int slen; int shmId; - slen=strlen(spaceId); - nzgId = (char *)malloc(sizeof(char)*(slen+4)); - sprintf(nzgId,"/NZG%s",spaceId); + char * nzgId=msgSp2nzgId(spaceId); if ((shmId=shm_open(nzgId,O_RDWR,MSGSPACE_DEFAULT_MODE)) < 0){ perror("shm_open"); return NULL; @@ -66,7 +57,19 @@ msgSpace * msgSpaceOpen(msgSpaceId spaceId){ } void msgSpaceDelete(msgSpaceId spaceId){ - // - + int shmId; + msgSpaceId nzgId=msgSp2nzgId(spaceId); + int er; + if ((er=shm_unlink(nzgId))<0){ + perror("shm_unlink"); + }; } +msgSpaceId msgSp2nzgId(msgSpaceId spaceId){ + char * resNzgId; + int slen; + slen=strlen(spaceId); + resNzgId = (char *)malloc(sizeof(char)*(slen+4)); + sprintf(resNzgId,"/NZG%s",(char *)spaceId); + return ((msgSpaceId)resNzgId); +} diff --git a/src/nzg_proto.h b/src/nzg_proto.h index e7a032c..1acd116 100644 --- a/src/nzg_proto.h +++ b/src/nzg_proto.h @@ -8,11 +8,17 @@ msgSpace * msgSpaceCreate( msgPool * queueNbCar // tableau de caracteristiques des different pool ); -msgSpace * msgSpaceOpen(msgSpaceId spaceId); - void * msgAllocate( msgSpace * space, //espace de message concerné int pool, //numéro de pool ou réaliser l'allocation int taille, //si l'argument précédent est ANYPOOL, taille requise int option // 0 ou NONBLOCK ); + + +/* nzg_create.c */ +msgSpace *msgSpaceCreate(msgSpaceId spaceId, int queueNb, int poolNb, msgPool *queueNbCar); +msgSpace *msgSpaceOpen(msgSpaceId spaceId); +void msgSpaceDelete(msgSpaceId spaceId); +msgSpaceId msgSp2nzgId(msgSpaceId spaceId); +