diff --git a/src/allocate.c b/src/allocate.c index afc3192..cc37a44 100644 --- a/src/allocate.c +++ b/src/allocate.c @@ -186,7 +186,6 @@ void * msgAllocate(msgSpace *space, int bufferFreeSize; bufferFreeSize=mSPoolDataTabAddr[selectedPoolIndex].bufferSize; printf("BufferSize : %d", bufferFreeSize); -<<<<<<< allocate.c resultAddr=msgBufferMap(mSPoolDataTabAddr,selectedPoolIndex,bufferFreeIndex); if (resultAddr==NULL){ diff --git a/src/bufferMap.c b/src/bufferMap.c index d17c423..9c69e0d 100644 --- a/src/bufferMap.c +++ b/src/bufferMap.c @@ -2,11 +2,11 @@ void * msgBufferMap(msgPoolData * poolDataTab, int poolIndex, int bufferIndex) { - void * resultAddr; - int bufferSize, bufferNb; - int poolBufferTabFd; - msgPoolId poolBufferTabId; - + void * resultAddr; + int bufferSize, bufferNb; + int poolBufferTabFd; + msgPoolId poolBufferTabId; + printf("Mapping buffer (%d,%d)\n",poolIndex,bufferIndex); // TODO: récuperer l'ID du BufferInfoTab; strcpy(poolBufferTabId, poolDataTab[poolIndex].poolId); bufferSize=poolDataTab[poolIndex].bufferSize; @@ -17,31 +17,36 @@ void * msgBufferMap(msgPoolData * poolDataTab, int poolIndex, int bufferIndex) { NZG_ERROR("shm_open",poolBufferTabId); goto ERROR; } - + // mapper le buffer dans l'espace mémoire du processus /* on s'arrete juste derriere l'index qui nous intéresse */ resultAddr=mmap(NULL, - bufferSize*(bufferIndex+1), - PROT_NONE, - MAP_SHARED, - poolBufferTabFd, - (off_t)0); - if(resultAddr == MAP_FAILED) { - NZG_ERROR("mmap", poolBufferTabId); - goto ERROR; - } + bufferSize*(bufferIndex+1), + PROT_READ|PROT_WRITE, //PROT_NONE + MAP_SHARED, + poolBufferTabFd, + (off_t)0); + if(resultAddr == MAP_FAILED) { + NZG_ERROR("mmap", poolBufferTabId); + goto ERROR; + } + printf( "Mapped from 0x%08x\n to 0x%08x\n", + (int)resultAddr, + (int)resultAddr+ bufferSize*(bufferIndex+1) + ); - resultAddr=resultAddr +( bufferSize*bufferIndex); + resultAddr=resultAddr +( bufferSize*bufferIndex); + printf( "Moved to 0x%08x\n",(int)resultAddr ); - mprotect( - resultAddr, - bufferSize, - PROT_READ|PROT_WRITE - ); + /* mprotect( + resultAddr, + bufferSize, + PROT_READ|PROT_WRITE + );*/ - close(poolBufferTabFd); + close(poolBufferTabFd); - return resultAddr; + return resultAddr; ERROR: - return NULL; + return NULL; } diff --git a/src/proto.h b/src/proto.h index 1cf03c8..953ce32 100644 --- a/src/proto.h +++ b/src/proto.h @@ -17,6 +17,8 @@ int msgBufferGetProcAttach(msgPoolData *poolDataTabAddr, int poolNb, int *poolIn int msgBufferInfoTabCreate(msgSpaceId externId, msgPoolData *poolDataTabAddr, int poolIdx, int bufferNb); /* bufferInfoTabInit.c */ int msgBufferInfoTabInit(msgPoolData *poolDataTabAddr, int poolIndex); +/* bufferMap.c */ +void *msgBufferMap(msgPoolData *poolDataTab, int poolIndex, int bufferIndex); /* free.c */ int msgFree(msgSpace *space, void *addr); /* get.c */