xref: /openbsd-src/regress/lib/libpthread/semaphore/sem_trywait/sem_trywait.c (revision 3fbe19a47e48fbca381ff3c959a0c6669579f479)
1 /*	$OpenBSD: sem_trywait.c,v 1.1.1.1 2012/01/04 17:36:40 mpi 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 int
12 main(int argc, char **argv)
13 {
14 	sem_t sem;
15 	int val;
16 
17 	CHECKn(sem_trywait(&sem));
18 	ASSERT(errno == EINVAL);
19 
20 	CHECKr(sem_init(&sem, 0, 0));
21 
22 	CHECKn(sem_trywait(&sem));
23 	ASSERT(errno == EAGAIN);
24 
25 	CHECKr(sem_post(&sem));
26 	CHECKr(sem_trywait(&sem));
27 
28 	CHECKe(sem_getvalue(&sem, &val));
29 	ASSERT(val == 0);
30 
31 	CHECKe(sem_destroy(&sem));
32 
33 	SUCCEED;
34 }
35