From 045278e11b53fc1ad59945427feab1cd9275988f Mon Sep 17 00:00:00 2001 From: rpj Date: Fri, 22 Oct 2004 15:06:41 +0000 Subject: Changes to mutexes and semaphores - considered alpha for now --- sem_init.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'sem_init.c') diff --git a/sem_init.c b/sem_init.c index af0e285..fb596ae 100644 --- a/sem_init.c +++ b/sem_init.c @@ -128,17 +128,27 @@ sem_init (sem_t * sem, int pshared, unsigned int value) #else /* NEED_SEM */ s->value = value; - s->sem = CreateSemaphore (NULL, /* Always NULL */ - (long) 0, /* Force threads to wait */ - (long) _POSIX_SEM_VALUE_MAX, /* Maximum value */ - NULL); /* Name */ - - if (0 == s->sem) + if (pthread_mutex_init(&s->lock, NULL) == 0) + { + if ((s->sem = CreateSemaphore (NULL, /* Always NULL */ + (long) 0, /* Force threads to wait */ + (long) _POSIX_SEM_VALUE_MAX, /* Maximum value */ + NULL)) == 0) /* Name */ + { + (void) pthread_mutex_destroy(&s->lock); + result = ENOSPC; + } + } + else { - free (s); result = ENOSPC; } + if (result != 0) + { + free(s); + } + #endif /* NEED_SEM */ } -- cgit v1.2.3