+/*
+ * Copyright (c) 1994 by Xerox Corporation. All rights reserved.
+ * Copyright (c) 1996 by Silicon Graphics. All rights reserved.
+ * Copyright (c) 1998 by Fergus Henderson. All rights reserved.
+ * Copyright (c) 2000-2009 by Hewlett-Packard Development Company.
+ * All rights reserved.
+ *
+ * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
+ * OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
+ *
+ * Permission is hereby granted to use or copy this program
+ * for any purpose, provided the above notices are retained on all copies.
+ * Permission to modify the code and to distribute modified code is granted,
+ * provided the above notices are retained, and a notice that the code was
+ * modified is included with the above copyright notice.
+ */
+
#ifndef GC_DARWIN_SEMAPHORE_H
#define GC_DARWIN_SEMAPHORE_H
safe. This isn't a problem because signals aren't used to
suspend threads on darwin.
*/
-
+
typedef struct {
pthread_mutex_t mutex;
pthread_cond_t cond;
if(pshared)
ABORT("sem_init with pshared set");
sem->value = value;
-
+
ret = pthread_mutex_init(&sem->mutex,NULL);
if(ret < 0) return -1;
ret = pthread_cond_init(&sem->cond,NULL);
}
sem->value--;
if(pthread_mutex_unlock(&sem->mutex) < 0)
- return -1;
+ return -1;
return 0;
}