1 #include <common.h>
2 
3 int
4 main(void) {
5 	sem_t *id;
6 	u_int elapsed;
7 	pid_t pid;
8 
9 	id = construct_shared_unnamed_sem(0);
10 	if (id == SEM_FAILED) {
11 		fprintf(stderr, "construct sem\n");
12 		return 1;
13 	}
14 
15 	pid = fork();
16 	switch (pid) {
17 	case -1:
18 		/* Error. */
19 		perror("fork");
20 		destruct_shared_unnamed_sem(id);
21 		return 1;
22 	case 0:
23 		/* Child. */
24 		sleep(1);
25 		sem_post(id);
26 		exit(0);
27 	}
28 
29 	if (timedwait(id, 2000, &elapsed, 0) < 0) {
30 		destruct_shared_unnamed_sem(id);
31 		return 1;
32 	}
33 	if (!ELAPSED(elapsed, 1000)) {
34 		fprintf(stderr, "sem_timedwait() with delayed post took %ums "
35 		    "instead of 1000ms", elapsed);
36 		destruct_shared_unnamed_sem(id);
37 		return 1;
38 	}
39 
40 	destruct_shared_unnamed_sem(id);
41 
42 	return 0;
43 }
44