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)143fbe19a4Smpimain(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