l3.libnazgul/src/bufferDetachProc.c

41 lines
1 KiB
C
Raw Normal View History

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