diff --git a/src/Makefile b/src/Makefile index 0ba3d4e..7da086b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -7,7 +7,7 @@ #LIBS= CC=gcc -CFLAGS=-ggdb -Wall +CFLAGS=-ggdb -Wall -O2 #-O2 #LIBS=-lrt #-verbose diff --git a/src/nzg_create.c b/src/nzg_create.c index 0181106..960eb54 100644 --- a/src/nzg_create.c +++ b/src/nzg_create.c @@ -19,10 +19,22 @@ msgSpace * msgSpaceCreate( msgSpace * result; int shmId; msgSpaceId nzgId; - /* on créee */ + msgSpaceList + static spaceIdNum=-1; + + spaceIdNum++; + /** recuperation de la liste des msgSpace **/ + /* (creation si elle n'existe pas */ + + /** on créee le nouvel element **/ printf("PAGESIZE : %d\n",(int)PAGESIZE); nzgId=msgSp2nzgId(spaceId); - if ((shmId=shm_open(nzgId,O_RDWR,MSGSPACE_DEFAULT_MODE)) < 0){ + shmId=shm_open( + nzgId, + O_RDWR|O_CREAT|O_EXCL, + MSGSPACE_DEFAULT_MODE + ); + if (shmId < 0 ) { perror("shm_open"); return NULL; } @@ -42,6 +54,10 @@ msgSpace * msgSpaceCreate( } +/* + * spaceId : blabla + */ + msgSpace * msgSpaceOpen(msgSpaceId spaceId){ int shmId; char * nzgId=msgSp2nzgId(spaceId); @@ -65,7 +81,7 @@ msgSpaceId msgSp2nzgId(msgSpaceId spaceId){ char * resNzgId; int slen; slen=strlen(spaceId); - resNzgId = (char *)malloc(sizeof(char)*(slen+4)); - sprintf(resNzgId,"/NZG%s",(char *)spaceId); + resNzgId = (char *)malloc(sizeof(char)*(slen+11)); + sprintf(resNzgId,"/tmp/.nzg-%s",(char *)spaceId); return ((msgSpaceId)resNzgId); } diff --git a/src/nzg_global.h b/src/nzg_global.h index 158818e..e89e4e5 100644 --- a/src/nzg_global.h +++ b/src/nzg_global.h @@ -1,3 +1,6 @@ +#ifndef _NZG_GLOBAL +#define _NZG_GLOBAL 1 + #include /* POSIX et al */ #include #include @@ -7,3 +10,4 @@ #include /* shm_open */ #define PAGESIZE sysconf(_SC_PAGESIZE) +#endif diff --git a/src/nzg_iface.h b/src/nzg_iface.h index c8fb611..a2f7665 100644 --- a/src/nzg_iface.h +++ b/src/nzg_iface.h @@ -1,3 +1,7 @@ +#ifndef _NZG_IFACE +#define _NZG_IFACE 1 + + #include "nzg_global.h" #define MSGSPACE_DEFAULT_MODE 0600 @@ -12,7 +16,14 @@ typedef struct MsgSpace { } msgSpace; +typedef char * msgSpaceListElemId; +typedef struct MsgSpaceListElem { + void * id; + int ownerPid; + /* struct msgSpaceListElem * next; */ + msgSpaceListElemId next; +} * msgSpaceList, msgSpaceListElem; - +#endif /* */ diff --git a/test/Makefile b/test/Makefile index cb3d0ab..31c43d6 100644 --- a/test/Makefile +++ b/test/Makefile @@ -8,12 +8,17 @@ OS=$(shell uname -s) CC=gcc -CFLAGS=-Wall --static + +CFLAGS=-Wall --static -O2 -ggdb #-O2 -ggdb INCLUDES=-I ../src/ -LIBINC=-L ../src +LIBINC=-L ../src -L /usr/lib LIBS=-lnazgul +ifeq "SunOS" "${OS}" + LIBS=-lnazgul -lrt +endif + ifeq "Linux" "${OS}" LIBS=-lnazgul -lrt endif diff --git a/test/create_delete.c b/test/create_delete.c index 3dd62f3..33051a2 100644 --- a/test/create_delete.c +++ b/test/create_delete.c @@ -3,10 +3,14 @@ #include "nzg_proto.h" int main(void) { - // msgSpace mS=0; - msgSpaceId testId=(msgSpaceId)"test"; - //msgSpace * mSPAC=msgSpaceCreate(testId,0,0,NULL); + // msgSpace mS=0; + + msgSpaceId testId; + msgSpace * mSPAC; + + testId=(msgSpaceId)"test"; + mSPAC=msgSpaceCreate(testId,0,0,NULL); msgSpaceDelete(testId); - + return 0; }