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 main(int argc,char ** argv)14main(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