#include "libnazgul.h" int msgBufferDetachProc( msgPoolData * poolDataTabAddr, int poolIndex, int bufferIndex, void * addr ){ msgBufferInfoTabId bufferInfoTabId; int bufferInfoTabFd; msgBufferInfo * bufferInfoTabAddr; int bufferInfoNb; printf("Detaching %d,%d\n",poolIndex,bufferIndex); //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("shm_open",bufferInfoTabId); return -1; } /** on regarde dans le tableau d'infos de buffer **/ bufferInfoNb=poolDataTabAddr[poolIndex].bufferNb; bufferInfoTabAddr=mmap(NULL,bufferInfoNb*sizeof(msgBufferInfo), PROT_READ|PROT_WRITE,MAP_SHARED,bufferInfoTabFd,(off_t)0); bufferInfoTabAddr[bufferIndex].ownerPid = (pid_t)-1; bufferInfoTabAddr[bufferIndex].addr = NULL; if (munmap(bufferInfoTabAddr,bufferInfoNb*sizeof(msgBufferInfo))< 0) { NZG_ERROR("munmap",bufferInfoTabId); return -1; } return 0; }