diff --git a/src/bufferMap.c b/src/bufferMap.c new file mode 100644 index 0000000..94aecc0 --- /dev/null +++ b/src/bufferMap.c @@ -0,0 +1,39 @@ +#include "libnazgul.h" + + +void * msgBufferMap(msgSpace * space, int poolIndex, int bufferIndex) { + void * resultAddr; + + msgBufferInfoTabId bufferInfoTabId; + int bufferInfoTabFd; + + // TODO: récuperer l'ID du BufferInfoTab; + strcpy(bufferInfoTabId, poolDataTabAddr[poolIndex].bufferInfoTabId); + + + bufferInfoTabFd=shm_open(bufferInfoTabId,O_RDWR,SHM_DEFAULT_MODE); + if (bufferInfoTabFd<0){ + NZG_ERROR("sem_open",bufferInfoTabId); + return -1; + } + + + if(msPoolFd == -1) { + NZG_ERROR("shm_open", space->poolDataTabId); + goto ERROR; + } + + // mapper le buffer dans l'espace mémoire du processus + resultAddr=mmap(NULL, buffersize, PROT_WRITE|PROT_READ, MAP_SHARED, msPoolFd, (off_t)0); + + if(resultAddr == MAP_FAILED) { + NZG_ERROR("mmap", poolDataTabId); + goto ERROR; + } + + close(msPoolFd); + + return resultAddr; +ERROR: + return NULL; +}