xref: /dragonfly/include/semaphore.h (revision 91bc5450)
194f03308SSascha Wildner /*-
294f03308SSascha Wildner  * Copyright (c) 1996, 1997
394f03308SSascha Wildner  *	HD Associates, Inc.  All rights reserved.
494f03308SSascha Wildner  *
594f03308SSascha Wildner  * Redistribution and use in source and binary forms, with or without
694f03308SSascha Wildner  * modification, are permitted provided that the following conditions
794f03308SSascha Wildner  * are met:
894f03308SSascha Wildner  * 1. Redistributions of source code must retain the above copyright
994f03308SSascha Wildner  *    notice, this list of conditions and the following disclaimer.
1094f03308SSascha Wildner  * 2. Redistributions in binary form must reproduce the above copyright
1194f03308SSascha Wildner  *    notice, this list of conditions and the following disclaimer in the
1294f03308SSascha Wildner  *    documentation and/or other materials provided with the distribution.
1394f03308SSascha Wildner  * 3. All advertising materials mentioning features or use of this software
1494f03308SSascha Wildner  *    must display the following acknowledgement:
1594f03308SSascha Wildner  *	This product includes software developed by HD Associates, Inc
1694f03308SSascha Wildner  * 4. Neither the name of the author nor the names of any co-contributors
1794f03308SSascha Wildner  *    may be used to endorse or promote products derived from this software
1894f03308SSascha Wildner  *    without specific prior written permission.
1994f03308SSascha Wildner  *
2094f03308SSascha Wildner  * THIS SOFTWARE IS PROVIDED BY HD ASSOCIATES AND CONTRIBUTORS ``AS IS'' AND
2194f03308SSascha Wildner  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2294f03308SSascha Wildner  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2394f03308SSascha Wildner  * ARE DISCLAIMED.  IN NO EVENT SHALL HD ASSOCIATES OR CONTRIBUTORS BE LIABLE
2494f03308SSascha Wildner  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2594f03308SSascha Wildner  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2694f03308SSascha Wildner  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2794f03308SSascha Wildner  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2894f03308SSascha Wildner  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2994f03308SSascha Wildner  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3094f03308SSascha Wildner  * SUCH DAMAGE.
3194f03308SSascha Wildner  *
3294f03308SSascha Wildner  * $FreeBSD: src/sys/posix4/semaphore.h,v 1.6 2000/01/20 07:55:42 jasone Exp $
3394f03308SSascha Wildner  */
3494f03308SSascha Wildner 
3594f03308SSascha Wildner #ifndef _SEMAPHORE_H_
3694f03308SSascha Wildner #define _SEMAPHORE_H_
3794f03308SSascha Wildner 
3894f03308SSascha Wildner /* semaphore.h: POSIX 1003.1b semaphores */
3994f03308SSascha Wildner 
4094f03308SSascha Wildner #include <sys/cdefs.h>
4194f03308SSascha Wildner #include <sys/_timespec.h>
4294f03308SSascha Wildner #include <machine/limits.h>
4394f03308SSascha Wildner 
4494f03308SSascha Wildner /* Opaque type definition. */
4594f03308SSascha Wildner struct sem;
4694f03308SSascha Wildner typedef	struct sem *sem_t;
4794f03308SSascha Wildner 
4894f03308SSascha Wildner #define	SEM_FAILED	((sem_t *)0)
4994f03308SSascha Wildner #define	SEM_VALUE_MAX	INT_MAX
5094f03308SSascha Wildner 
5194f03308SSascha Wildner __BEGIN_DECLS
5294f03308SSascha Wildner int	 sem_init(sem_t *, int, unsigned int);
5394f03308SSascha Wildner int	 sem_destroy(sem_t *);
5494f03308SSascha Wildner sem_t	*sem_open(const char *, int, ...);
5594f03308SSascha Wildner int	 sem_close(sem_t *);
5694f03308SSascha Wildner int	 sem_unlink(const char *);
5794f03308SSascha Wildner int	 sem_wait(sem_t *);
5894f03308SSascha Wildner int	 sem_trywait(sem_t *);
5994f03308SSascha Wildner int	 sem_timedwait(sem_t * __restrict, const struct timespec * __restrict);
6094f03308SSascha Wildner int	 sem_post(sem_t *);
6194f03308SSascha Wildner int	 sem_getvalue(sem_t * __restrict, int * __restrict);
6294f03308SSascha Wildner __END_DECLS
6394f03308SSascha Wildner 
64*91bc5450SSascha Wildner #endif /* !_SEMAPHORE_H_ */
65