#include "libnazgul.h" #include "nzg_ids.h" /* pid[] liste process demandeurs */ int msgPoolCreate( msgPoolId poolId, int buffNb, int buffSize ) { int poolFd; static int poolNb; msgPoolId id; sem_t * sem; if (msgSpacePoolId2nzgPoolId(id,poolId,poolNb) == -1){ fprintf( stderr, "msgPoolId creation failed for id %s\n", (char*)poolId ); return -1; } poolFd=shm_open(id,O_RDWR|O_CREAT|O_EXCL|O_TRUNC,MSGSPACE_DEFAULT_MODE); if (poolFd == -1 ) { fprintf( stderr, "msgPool creation failed: %s\n", strerror( errno ) ); return -1; } // on met un semaphore sur le pool sem = sem_open(id, O_CREAT|O_EXCL, 0666, buffNb); // on met le pool a la taille voulue pour qu'il // puisse contenir les buffs if (ftruncate(poolFd, (buffSize*buffNb)) == -1){ fprintf( stderr, "msgPool resizing failed: %s\n", strerror( errno ) ); return -1; } close(poolFd); return 0; }