xref: /dflybsd-src/test/testcases/posixipc/trywait_locked/trywait_locked.c (revision 0bba68feaae2960c1f2b5feb6978a8918f571707)
1*0bba68feSAntonio Huete Jimenez #include <common.h>
2*0bba68feSAntonio Huete Jimenez 
3*0bba68feSAntonio Huete Jimenez int
main(void)4*0bba68feSAntonio Huete Jimenez main(void) {
5*0bba68feSAntonio Huete Jimenez 	sem_t id;
6*0bba68feSAntonio Huete Jimenez 
7*0bba68feSAntonio Huete Jimenez 	if (sem_init(&id, 0, 0) < 0) {
8*0bba68feSAntonio Huete Jimenez 		perror("sem_init");
9*0bba68feSAntonio Huete Jimenez 		return 1;
10*0bba68feSAntonio Huete Jimenez 	}
11*0bba68feSAntonio Huete Jimenez 
12*0bba68feSAntonio Huete Jimenez 	/* This should fail with EAGAIN and leave the value at 0. */
13*0bba68feSAntonio Huete Jimenez 	if (sem_trywait(&id) >= 0) {
14*0bba68feSAntonio Huete Jimenez 		sem_destroy(&id);
15*0bba68feSAntonio Huete Jimenez 		return 1;
16*0bba68feSAntonio Huete Jimenez 	}
17*0bba68feSAntonio Huete Jimenez 	if (errno != EAGAIN) {
18*0bba68feSAntonio Huete Jimenez 		perror("wrong error from sem_trywait()");
19*0bba68feSAntonio Huete Jimenez 		sem_destroy(&id);
20*0bba68feSAntonio Huete Jimenez 		return 1;
21*0bba68feSAntonio Huete Jimenez 	}
22*0bba68feSAntonio Huete Jimenez 	if (checkvalue(&id, 0) < 0) {
23*0bba68feSAntonio Huete Jimenez 		sem_destroy(&id);
24*0bba68feSAntonio Huete Jimenez 		return 1;
25*0bba68feSAntonio Huete Jimenez 	}
26*0bba68feSAntonio Huete Jimenez 
27*0bba68feSAntonio Huete Jimenez 	if (sem_destroy(&id) < 0) {
28*0bba68feSAntonio Huete Jimenez 		perror("sem_destroy");
29*0bba68feSAntonio Huete Jimenez 		return 1;
30*0bba68feSAntonio Huete Jimenez 	}
31*0bba68feSAntonio Huete Jimenez 	return 0;
32*0bba68feSAntonio Huete Jimenez }
33