#include "libnazgul.h" #include "ids.h" #define DEBUG 0 int msgQueueProtLock(msgSpaceId externId,int queueIdx){ sem_t * queueSemFd; msgQueueSemId queueSemId; msgQueueProtSemIdIntern(queueSemId,externId,queueIdx); if (DEBUG) { printf("Locking %s\n",queueSemId);} queueSemFd=sem_open(queueSemId,O_CREAT,SEM_DEFAULT_MODE,1); if(queueSemFd==SEM_FAILED){ NZG_ERROR("sem_open",queueSemId); goto ERROR; } if(sem_wait(queueSemFd)==-1){ NZG_ERROR("sem_wait",queueSemId); goto ERROR; } int semval=0; sem_getvalue(queueSemFd,&semval); if (DEBUG) { printf("(AfterValue:%d)\n",semval); } sem_close(queueSemFd); sem_close(queueSemFd); return 0; ERROR: return -1; }