39 lines
1 KiB
C
39 lines
1 KiB
C
#include "libnazgul.h"
|
|
#include "ids.h"
|
|
|
|
int msgBufferInfoTabCreate(msgSpaceId externId,
|
|
msgPoolData * poolDataTabAddr,
|
|
int poolIdx, int bufferNb)
|
|
{
|
|
|
|
int bufferInfoTabFd;
|
|
msgBufferInfoTabId bufferInfoTabId;
|
|
|
|
/* creation des infos sur buffers DEBUT */
|
|
if (msgBufferInfoTabIdIntern(bufferInfoTabId, externId, poolIdx) == -1) {
|
|
NZG_ERROR("msgPoolId creation", bufferInfoTabId);
|
|
return -1;
|
|
}
|
|
|
|
bufferInfoTabFd =
|
|
shm_open(bufferInfoTabId, O_RDWR | O_CREAT | O_EXCL | O_TRUNC,
|
|
MSGSPACE_DEFAULT_MODE);
|
|
if (bufferInfoTabFd == -1) {
|
|
fprintf(stderr, "msgInfoTab : %s creation failed: %s\n",
|
|
bufferInfoTabId, strerror(errno));
|
|
return -1;
|
|
}
|
|
if (ftruncate(bufferInfoTabFd, bufferNb * sizeof(msgBufferInfo)) == -1) {
|
|
fprintf(stderr, "msgBufferInfoTab resizing failed: %s\n",
|
|
strerror(errno));
|
|
return -1;
|
|
}
|
|
close(bufferInfoTabFd);
|
|
/* creation des infos sur buffers FIN */
|
|
|
|
msgBufferInfoTabInit(poolDataTabAddr, poolIdx);
|
|
|
|
return -1;
|
|
NZG_ERROR("munmap", bufferInfoTabId);
|
|
return -1;
|
|
}
|