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