1 /* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, write to the Free
16 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19 #ifndef PTHREAD_SEMAPHORE_H
20 #define PTHREAD_SEMAPHORE_H
22 #include <sys/queue.h>
24 #include <parlib/mcs.h>
28 /* Value returned if `sem_open' failed. */
29 #define SEM_FAILED ((sem_t *) 0)
34 struct pthread_queue queue;
35 struct spin_pdr_lock lock;
38 extern int sem_init (sem_t *__sem, int __pshared, unsigned int __value);
39 extern int sem_destroy (sem_t *__sem);
40 extern sem_t *sem_open (__const char *__name, int __oflag, ...);
41 extern int sem_close (sem_t *__sem);
42 extern int sem_unlink (__const char *__name);
43 extern int sem_wait (sem_t *__sem);
44 extern int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);
45 extern int sem_trywait (sem_t *__sem);
46 extern int sem_post (sem_t *__sem);
47 extern int sem_getvalue (sem_t *__restrict __sem, int *__restrict __sval);
51 #endif /* PTHREAD_SEMAPHORE_H */