2019-09-17 12:45:48 +00:00
|
|
|
|
#include "libnazgul.h"
|
|
|
|
|
|
|
|
|
|
int msgBufferDetachProc(
|
2004-02-23 15:54:29 +00:00
|
|
|
|
msgPoolData * poolDataTabAddr,
|
2019-09-17 12:45:48 +00:00
|
|
|
|
int poolIndex,
|
|
|
|
|
int bufferIndex,
|
|
|
|
|
void * addr
|
|
|
|
|
){
|
|
|
|
|
msgBufferInfoTabId bufferInfoTabId;
|
|
|
|
|
int bufferInfoTabFd;
|
|
|
|
|
msgBufferInfo * bufferInfoTabAddr;
|
|
|
|
|
int bufferInfoNb;
|
|
|
|
|
|
2004-02-23 17:15:20 +00:00
|
|
|
|
printf("Detaching %d,%d\n",poolIndex,bufferIndex);
|
2019-09-17 12:45:48 +00:00
|
|
|
|
//r<>cuperer l'ID du BufferInfoTab;
|
2004-02-25 12:46:46 +00:00
|
|
|
|
|
|
|
|
|
|
2019-09-17 12:45:48 +00:00
|
|
|
|
strcpy(bufferInfoTabId, poolDataTabAddr[poolIndex].bufferInfoTabId);
|
|
|
|
|
|
|
|
|
|
bufferInfoTabFd=shm_open(bufferInfoTabId,O_RDWR,SHM_DEFAULT_MODE);
|
|
|
|
|
if (bufferInfoTabFd<0){
|
2004-02-22 15:29:36 +00:00
|
|
|
|
NZG_ERROR("shm_open",bufferInfoTabId);
|
2019-09-17 12:45:48 +00:00
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** on regarde dans le tableau d'infos de buffer **/
|
|
|
|
|
bufferInfoNb=poolDataTabAddr[poolIndex].bufferNb;
|
|
|
|
|
bufferInfoTabAddr=mmap(NULL,bufferInfoNb*sizeof(msgBufferInfo),
|
2004-02-23 17:15:20 +00:00
|
|
|
|
PROT_READ|PROT_WRITE,MAP_SHARED,bufferInfoTabFd,(off_t)0);
|
2019-09-17 12:45:48 +00:00
|
|
|
|
|
|
|
|
|
bufferInfoTabAddr[bufferIndex].ownerPid = (pid_t)-1;
|
|
|
|
|
bufferInfoTabAddr[bufferIndex].addr = NULL;
|
|
|
|
|
|
|
|
|
|
if (munmap(bufferInfoTabAddr,bufferInfoNb*sizeof(msgBufferInfo))< 0)
|
2004-02-22 15:29:36 +00:00
|
|
|
|
{
|
|
|
|
|
NZG_ERROR("munmap",bufferInfoTabId);
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
2019-09-17 12:45:48 +00:00
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|