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