summaryrefslogtreecommitdiffstats
path: root/testsuite/selectpollkqueue01
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-06-10 13:05:16 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-06-10 14:03:34 +0200
commit71f66e761d1312ba38fa140d5ea16377766b4a9f (patch)
tree786eaec825484402418a180df3bfc3551036721b /testsuite/selectpollkqueue01
parentRemove unused files (diff)
downloadrtems-libbsd-71f66e761d1312ba38fa140d5ea16377766b4a9f.tar.bz2
selectpollkqueue01: Add EVFILT_USER test case
Diffstat (limited to 'testsuite/selectpollkqueue01')
-rw-r--r--testsuite/selectpollkqueue01/test_main.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/testsuite/selectpollkqueue01/test_main.c b/testsuite/selectpollkqueue01/test_main.c
index ddbd2ef2..c74caa1b 100644
--- a/testsuite/selectpollkqueue01/test_main.c
+++ b/testsuite/selectpollkqueue01/test_main.c
@@ -957,6 +957,54 @@ test_kqueue_close(test_context *ctx)
}
static void
+test_kqueue_user(test_context *ctx)
+{
+ int kq;
+ uintptr_t ident;
+ u_int flag;
+ struct kevent change;
+ struct kevent trigger;
+ struct kevent event;
+ const struct timespec *timeout = NULL;
+ int rv;
+ ssize_t n;
+
+ puts("test kqueue user");
+
+ ident = 0xabc;
+ flag = 0x1;
+
+ kq = kqueue();
+ assert(kq >= 0);
+
+ EV_SET(&change, ident, EVFILT_USER, EV_ADD | EV_ENABLE, NOTE_FFNOP, 0,
+ TEST_UDATA);
+
+ rv = kevent(kq, &change, 1, NULL, 0, timeout);
+ assert(rv == 0);
+
+ ident = 0xabc;
+ EV_SET(&trigger, ident, EVFILT_USER, 0, NOTE_TRIGGER | NOTE_FFCOPY |
+ flag, 0, TEST_UDATA);
+
+ rv = kevent(kq, &trigger, 1, NULL, 0, timeout);
+ assert(rv == 0);
+
+ memset(&event, 0, sizeof(event));
+ rv = kevent(kq, NULL, 0, &event, 1, timeout);
+ assert(rv == 1);
+ assert(event.ident == ident);
+ assert(event.filter == EVFILT_USER);
+ assert(event.flags == 0);
+ assert(event.fflags == flag);
+ assert(event.data == 0);
+ assert(event.udata == TEST_UDATA);
+
+ rv = close(kq);
+ assert(rv == 0);
+}
+
+static void
test_main(void)
{
test_context *ctx = &test_instance;
@@ -985,6 +1033,7 @@ test_main(void)
test_kqueue_read(ctx);
test_kqueue_write(ctx);
test_kqueue_close(ctx);
+ test_kqueue_user(ctx);
exit(0);
}