xref: /dflybsd-src/test/testcases/posixipc/wait_unlocked/wait_unlocked.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 	u_int elapsed;
7*0bba68feSAntonio Huete Jimenez 
8*0bba68feSAntonio Huete Jimenez 	if (sem_init(&id, 0, 1) < 0) {
9*0bba68feSAntonio Huete Jimenez 		perror("sem_init");
10*0bba68feSAntonio Huete Jimenez 		return 1;
11*0bba68feSAntonio Huete Jimenez 	}
12*0bba68feSAntonio Huete Jimenez 
13*0bba68feSAntonio Huete Jimenez 	/* This should succeed right away and set the value to 0. */
14*0bba68feSAntonio Huete Jimenez 	if (testwait(&id, &elapsed) < 0) {
15*0bba68feSAntonio Huete Jimenez 		sem_destroy(&id);
16*0bba68feSAntonio Huete Jimenez 		return 1;
17*0bba68feSAntonio Huete Jimenez 	}
18*0bba68feSAntonio Huete Jimenez 	if (!ELAPSED(elapsed, 0)) {
19*0bba68feSAntonio Huete Jimenez 		fprintf(stderr, "sem_wait() of unlocked sem took %ums",
20*0bba68feSAntonio Huete Jimenez 		    elapsed);
21*0bba68feSAntonio Huete Jimenez 		sem_destroy(&id);
22*0bba68feSAntonio Huete Jimenez 		return 1;
23*0bba68feSAntonio Huete Jimenez 	}
24*0bba68feSAntonio Huete Jimenez 	if (checkvalue(&id, 0) < 0) {
25*0bba68feSAntonio Huete Jimenez 		sem_destroy(&id);
26*0bba68feSAntonio Huete Jimenez 		return 1;
27*0bba68feSAntonio Huete Jimenez 	}
28*0bba68feSAntonio Huete Jimenez 
29*0bba68feSAntonio Huete Jimenez 	if (sem_destroy(&id) < 0) {
30*0bba68feSAntonio Huete Jimenez 		perror("sem_destroy");
31*0bba68feSAntonio Huete Jimenez 		return 1;
32*0bba68feSAntonio Huete Jimenez 	}
33*0bba68feSAntonio Huete Jimenez 	return 0;
34*0bba68feSAntonio Huete Jimenez }
35