testcases: Attempt to integrate POSIX IPC tests to dfregress(8)
[dragonfly.git] / test / testcases / posixipc / wait_locked / wait_locked.c
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
11         pid = fork();
12         switch (pid) {
13         case -1:
14                 /* Error. */
15                 perror("fork");
16                 destruct_shared_unnamed_sem(id);
17                 return 1;
18         case 0:
19                 /* Child. */
20                 sleep(1);
21                 sem_post(id);
22                 exit(0);
23         }
24
25         if (testwait(id, &elapsed) < 0) {
26                 destruct_shared_unnamed_sem(id);
27                 return 1;
28         }
29         if (!ELAPSED(elapsed, 1000)) {
30                 fprintf(stderr, "sem_wait() with delayed post took %ums "
31                     "instead of 1000ms", elapsed);
32                 destruct_shared_unnamed_sem(id);
33                 return 1;
34         }
35
36         destruct_shared_unnamed_sem(id);
37
38         return 0;
39 }