#include "libnazgul.h" #include "ids.h" void * msgPoolDataTabCreate(msgSpace * space){ int poolDataFd; // shm file descriptor msgPoolData * poolDataTabAddr; poolDataFd=shm_open( space->poolDataTabId, O_RDWR|O_CREAT|O_EXCL|O_TRUNC, MSGSPACE_DEFAULT_MODE ); if (poolDataFd == -1 ) { NZG_ERROR("shm_open :create",space->poolDataTabId); goto ERROR; } /* allocation de la bonne zone mémoire pour le poolData */ if (ftruncate(poolDataFd, (space->poolNb)*sizeof(msgPoolData)) == -1){ NZG_ERROR("ftruncate",space->poolDataTabId); goto ERROR; } close(poolDataFd); poolDataTabAddr = msgPoolDataTabOpen(space); if (poolDataTabAddr == NULL){ NZG_ERROR("msgPoolDataTabOpen : create",space->poolDataTabId); goto ERROR; } /*mmap( 0, sizeof( *mSAddr ), PROT_READ | PROT_WRITE, MAP_SHARED, mSFd, 0 ); if( poolDataAddr == MAP_FAILED ) { NZG_ERROR("mmap",poolDataTabId); goto ERROR; }*/ return poolDataTabAddr; ERROR: return NULL; }