diff --git a/src/nzg_spaces.c b/src/nzg_spaces.c index 9185901..728ac38 100644 --- a/src/nzg_spaces.c +++ b/src/nzg_spaces.c @@ -72,7 +72,7 @@ msgSpace * msgSpaceCreate( return NULL; } - printf( "Map addr is 0x%08x\n", (int)mSAddr ); + printf( "msgSpace map addr is 0x%08x\n", (int)mSAddr ); /* on ferme le descripteur du fichier */ close(mSFd); @@ -97,21 +97,45 @@ msgSpace * msgSpaceCreate( strerror( errno ) ); return NULL; } - /* TODO:allocation de la bonne zone mémoire pour le poolData */ + + /* allocation de la bonne zone mémoire pour le poolData */ + if (ftruncate(mSFd, poolNb*sizeof(* msgPoolData)) == -1){ + fprintf( stderr, "msgSpace resizing failed: %s\n", + strerror( errno ) ); + return NULL; + } - /* TODO: on ajoute spaceId a la liste des msgSpace connus */ + /* TODO: attacher chacun des msgPoolData : + * - y écrire les informations passées en param + * - creer les zones mémoires de chacune des pool + */ + mSPoolDataAddr = mmap( 0, sizeof( *mSAddr ), + PROT_READ | PROT_WRITE, + MAP_SHARED, mSFd, 0 ); + if( mSPoolDataAddr == MAP_FAILED ) { + fprintf( stderr, "mmap failed: %s\n", + strerror( errno ) ); + return NULL; + } - /* TODO: on crée queueNb files de messages */ + printf( "msgPoolData map addr is 0x%08x\n", (int)mSPoolDataFd ); - /* on créer poolNb pool de buffers */ - /* et on "attache" tout ce beau monde au spaceId */ - for (i=0;i } + + /* TODO: on ajoute spaceId a la liste des msgSpace connus */ + + /* TODO: on crée queueNb files de messages */ + + + /* on renvoie un pointeur sur le bon spaceId */ return mSAddr;