2 * cc evfilt_user.c -pthread -I/usr/src/sys/ -o /tmp/evfilt_user
11 static void *domaster(void *arg);
12 static void *doslave(void *arg);
15 main(int ac, char **avj)
24 EV_SET(&kev, 1, EVFILT_USER, EV_ADD|EV_CLEAR, 0, 0, 0);
25 r = kevent(fd, &kev, 1, NULL, 0, NULL);
26 printf("r = %d\n", r);
27 pthread_create(&td1, NULL, domaster, (void *)(intptr_t)fd);
29 pthread_create(&td2, NULL, doslave, (void *)(intptr_t)fd);
30 pthread_join(td1, NULL);
31 pthread_join(td2, NULL);
38 int fd = (int)(intptr_t)arg;
41 printf("master running\n");
43 EV_SET(&kev, 1, EVFILT_USER, 0, NOTE_TRIGGER, 0, 0);
44 r = kevent(fd, &kev, 1, NULL, 0, NULL);
45 printf("issued trigger %d\n", r);
56 int fd = (int)(intptr_t)arg;
59 printf("slave running\n");
61 r = kevent(fd, NULL, 0, &kev, 1, NULL);
62 printf("received %d\n", r);
64 EV_SET(&kev, 1, EVFILT_USER, EV_CLEAR, 0, 0, 0);
65 r = kevent(fd, &kev, 1, NULL, 0, NULL);