#include "libnazgul.h" #include "ids.h" #define DEBUG 0 int msgQueueReadLock(msgSpaceId externId, int queueIdx) { int semval; sem_t *queueSemFd; msgQueueSemId queueSemId; msgQueueReadSemIdIntern(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; } semval = 0; sem_getvalue(queueSemFd, &semval); if (DEBUG) { printf("(AfterValue:%d)\n", semval); } sem_close(queueSemFd); return 0; ERROR: return -1; }