#include "libnazgul.h"
#include "ids.h"

void * msgQueueElemOpen(msgQueueElemId queueElemId){
  int queueElemFd;
  void * queueElemAddr;

  queueElemFd=shm_open(queueElemId,O_RDWR,SHM_DEFAULT_MODE);
  if (queueElemFd == -1 ) {
	NZG_ERROR("shm_open : msgQueue open",queueElemId);
	goto ERROR;
  }

  queueElemAddr=mmap(NULL,
	  sizeof(msgQueueElem),
	  PROT_READ|PROT_WRITE,
	  MAP_SHARED,
	  queueElemFd,
	  0);
  if( queueElemAddr == MAP_FAILED ) {
	NZG_ERROR("mmap",queueElemId);
	goto ERROR;
  }

  close(queueElemFd);
  return queueElemAddr; 
ERROR: 
  return NULL;
}