xref: /openbsd-src/regress/lib/libpthread/semaphore/sem_trywait/sem_trywait.c (revision ce8a7339e20e3e13b3dadd581f8977d7576826a1)
1*ce8a7339Sguenther /*	$OpenBSD: sem_trywait.c,v 1.2 2012/03/03 09:36:26 guenther Exp $	*/
23fbe19a4Smpi /*
33fbe19a4Smpi  * Martin Pieuchot <mpi@openbsd.org>, 2011. Public Domain.
43fbe19a4Smpi  */
53fbe19a4Smpi 
63fbe19a4Smpi #include <errno.h>
73fbe19a4Smpi #include <unistd.h>
83fbe19a4Smpi #include <semaphore.h>
93fbe19a4Smpi #include "test.h"
103fbe19a4Smpi 
11*ce8a7339Sguenther sem_t sem;
12*ce8a7339Sguenther 
133fbe19a4Smpi int
main(int argc,char ** argv)143fbe19a4Smpi main(int argc, char **argv)
153fbe19a4Smpi {
163fbe19a4Smpi 	int val;
173fbe19a4Smpi 
183fbe19a4Smpi 	CHECKn(sem_trywait(&sem));
193fbe19a4Smpi 	ASSERT(errno == EINVAL);
203fbe19a4Smpi 
213fbe19a4Smpi 	CHECKr(sem_init(&sem, 0, 0));
223fbe19a4Smpi 
233fbe19a4Smpi 	CHECKn(sem_trywait(&sem));
243fbe19a4Smpi 	ASSERT(errno == EAGAIN);
253fbe19a4Smpi 
263fbe19a4Smpi 	CHECKr(sem_post(&sem));
273fbe19a4Smpi 	CHECKr(sem_trywait(&sem));
283fbe19a4Smpi 
293fbe19a4Smpi 	CHECKe(sem_getvalue(&sem, &val));
303fbe19a4Smpi 	ASSERT(val == 0);
313fbe19a4Smpi 
323fbe19a4Smpi 	CHECKe(sem_destroy(&sem));
333fbe19a4Smpi 
343fbe19a4Smpi 	SUCCEED;
353fbe19a4Smpi }
36