1 /*	$OpenBSD: sem_trywait.c,v 1.2 2012/03/03 09:36:26 guenther Exp $	*/
2 /*
3  * Martin Pieuchot <mpi@openbsd.org>, 2011. Public Domain.
4  */
5 
6 #include <errno.h>
7 #include <unistd.h>
8 #include <semaphore.h>
9 #include "test.h"
10 
11 sem_t sem;
12 
13 int
14 main(int argc, char **argv)
15 {
16 	int val;
17 
18 	CHECKn(sem_trywait(&sem));
19 	ASSERT(errno == EINVAL);
20 
21 	CHECKr(sem_init(&sem, 0, 0));
22 
23 	CHECKn(sem_trywait(&sem));
24 	ASSERT(errno == EAGAIN);
25 
26 	CHECKr(sem_post(&sem));
27 	CHECKr(sem_trywait(&sem));
28 
29 	CHECKe(sem_getvalue(&sem, &val));
30 	ASSERT(val == 0);
31 
32 	CHECKe(sem_destroy(&sem));
33 
34 	SUCCEED;
35 }
36