#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; }