2004-02-24 21:48:30 +00:00
|
|
|
|
#include "libnazgul.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void * msgBufferMap(msgSpace * space, int poolIndex, int bufferIndex) {
|
|
|
|
|
void * resultAddr;
|
2004-02-24 22:04:50 +00:00
|
|
|
|
int msPoolFd, buffersize;
|
2004-02-24 21:48:30 +00:00
|
|
|
|
|
|
|
|
|
msgBufferInfoTabId bufferInfoTabId;
|
|
|
|
|
int bufferInfoTabFd;
|
|
|
|
|
|
|
|
|
|
// TODO: r<>cuperer l'ID du BufferInfoTab;
|
2004-02-24 22:04:50 +00:00
|
|
|
|
//strcpy(bufferInfoTabId, poolDataTabAddr[poolIndex].bufferInfoTabId);
|
2004-02-24 21:48:30 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bufferInfoTabFd=shm_open(bufferInfoTabId,O_RDWR,SHM_DEFAULT_MODE);
|
|
|
|
|
if (bufferInfoTabFd<0){
|
|
|
|
|
NZG_ERROR("sem_open",bufferInfoTabId);
|
2004-02-24 22:04:50 +00:00
|
|
|
|
goto ERROR;
|
2004-02-24 21:48:30 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2004-02-24 22:04:50 +00:00
|
|
|
|
if(bufferInfoTabFd == -1) {
|
|
|
|
|
NZG_ERROR("shm_open", bufferInfoTabId);
|
2004-02-24 21:48:30 +00:00
|
|
|
|
goto ERROR;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// mapper le buffer dans l'espace m<>moire du processus
|
|
|
|
|
resultAddr=mmap(NULL, buffersize, PROT_WRITE|PROT_READ, MAP_SHARED, msPoolFd, (off_t)0);
|
|
|
|
|
|
2004-02-24 22:04:50 +00:00
|
|
|
|
// TODO: poolDataTabId
|
2004-02-24 21:48:30 +00:00
|
|
|
|
if(resultAddr == MAP_FAILED) {
|
2004-02-24 22:04:50 +00:00
|
|
|
|
//NZG_ERROR("mmap", poolDataTabId);
|
2004-02-24 21:48:30 +00:00
|
|
|
|
goto ERROR;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
close(msPoolFd);
|
|
|
|
|
|
|
|
|
|
return resultAddr;
|
|
|
|
|
ERROR:
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|