1 /* Copyright (C) 2002, 2003 Free Software Foundation, Inc. 2 This file is part of the GNU C Library. 3 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. 8 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. 13 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 17 02111-1307 USA. */ 18 19 #ifndef _SEMAPHORE_H 20 #define _SEMAPHORE_H 1 21 22 #include <features.h> 23 #include <sys/types.h> 24 #ifdef __USE_XOPEN2K 25 # define __need_timespec 26 # include <time.h> 27 #endif 28 29 /* Get the definition for sem_t. */ 30 #include <bits/semaphore.h> 31 32 33 __BEGIN_DECLS 34 35 /* Initialize semaphore object SEM to VALUE. If PSHARED then share it 36 with other processes. */ 37 extern int sem_init (sem_t *__sem, int __pshared, unsigned int __value) 38 __THROW; 39 /* Free resources associated with semaphore object SEM. */ 40 extern int sem_destroy (sem_t *__sem) __THROW; 41 42 /* Open a named semaphore NAME with open flags OFLAG. */ 43 extern sem_t *sem_open (__const char *__name, int __oflag, ...) __THROW; 44 45 /* Close descriptor for named semaphore SEM. */ 46 extern int sem_close (sem_t *__sem) __THROW; 47 48 /* Remove named semaphore NAME. */ 49 extern int sem_unlink (__const char *__name) __THROW; 50 51 /* Wait for SEM being posted. 52 53 This function is a cancellation point and therefore not marked with 54 __THROW. */ 55 extern int sem_wait (sem_t *__sem); 56 57 #ifdef __USE_XOPEN2K 58 /* Similar to `sem_wait' but wait only until ABSTIME. 59 60 This function is a cancellation point and therefore not marked with 61 __THROW. */ 62 extern int sem_timedwait (sem_t *__restrict __sem, 63 __const struct timespec *__restrict __abstime); 64 #endif 65 66 /* Test whether SEM is posted. */ 67 extern int sem_trywait (sem_t *__sem) __THROW; 68 69 /* Post SEM. */ 70 extern int sem_post (sem_t *__sem) __THROW; 71 72 /* Get current value of SEM and store it in *SVAL. */ 73 extern int sem_getvalue (sem_t *__restrict __sem, int *__restrict __sval) 74 __THROW; 75 76 77 __END_DECLS 78 79 #endif /* semaphore.h */ 80