2 * Copyright (c) 2009 Mark Heily <mark@heily.com>
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
24 test_kevent_timer_add(void)
26 const char *test_id = "kevent(EVFILT_TIMER, EV_ADD)";
31 EV_SET(&kev, 1, EVFILT_TIMER, EV_ADD, 0, 1000, NULL);
32 if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0)
33 err(1, "%s", test_id);
39 test_kevent_timer_del(void)
41 const char *test_id = "kevent(EVFILT_TIMER, EV_DELETE)";
46 EV_SET(&kev, 1, EVFILT_TIMER, EV_DELETE, 0, 0, NULL);
47 if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0)
48 err(1, "%s", test_id);
56 test_kevent_timer_get(void)
58 const char *test_id = "kevent(EVFILT_TIMER, wait)";
63 EV_SET(&kev, 1, EVFILT_TIMER, EV_ADD, 0, 1000, NULL);
64 if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0)
65 err(1, "%s", test_id);
67 kev.flags |= EV_CLEAR;
69 kevent_cmp(&kev, kevent_get(kqfd));
71 EV_SET(&kev, 1, EVFILT_TIMER, EV_DELETE, 0, 0, NULL);
72 if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0)
73 err(1, "%s", test_id);
81 const char *test_id = "kevent(EVFILT_TIMER, EV_ONESHOT)";
88 EV_SET(&kev, vnode_fd, EVFILT_TIMER, EV_ADD | EV_ONESHOT, 0, 500,NULL);
89 if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0)
90 err(1, "%s", test_id);
92 /* Retrieve the event */
93 kev.flags = EV_ADD | EV_CLEAR | EV_ONESHOT;
95 kevent_cmp(&kev, kevent_get(kqfd));
97 /* Check if the event occurs again */
108 const char *test_id = "kevent(EVFILT_TIMER, periodic)";
115 EV_SET(&kev, vnode_fd, EVFILT_TIMER, EV_ADD, 0, 1000,NULL);
116 if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0)
117 err(1, "%s", test_id);
119 /* Retrieve the event */
120 kev.flags = EV_ADD | EV_CLEAR;
122 kevent_cmp(&kev, kevent_get(kqfd));
124 /* Check if the event occurs again */
126 kevent_cmp(&kev, kevent_get(kqfd));
128 /* Delete the event */
129 kev.flags = EV_DELETE;
130 if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0)
131 err(1, "%s", test_id);
137 disable_and_enable(void)
139 const char *test_id = "kevent(EVFILT_TIMER, EV_DISABLE and EV_ENABLE)";
146 /* Add the watch and immediately disable it */
147 EV_SET(&kev, vnode_fd, EVFILT_TIMER, EV_ADD | EV_ONESHOT, 0, 2000,NULL);
148 if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0)
149 err(1, "%s", test_id);
150 kev.flags = EV_DISABLE;
151 if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0)
152 err(1, "%s", test_id);
155 /* Re-enable and check again */
156 kev.flags = EV_ENABLE;
157 if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0)
158 err(1, "%s", test_id);
160 kev.flags = EV_ADD | EV_CLEAR | EV_ONESHOT;
162 kevent_cmp(&kev, kevent_get(kqfd));
171 test_kevent_timer_add();
172 test_kevent_timer_del();
173 test_kevent_timer_get();
176 disable_and_enable();