From 5707bfc85c4da593ae5df6fb243ddb5639957def Mon Sep 17 00:00:00 2001 From: Kevin Cernekee Date: Sat, 7 Apr 2012 13:31:31 -0700 Subject: test/misc: Add tst-inotify Signed-off-by: Kevin Cernekee Signed-off-by: Mike Frysinger --- test/misc/tst-inotify.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 test/misc/tst-inotify.c (limited to 'test/misc') diff --git a/test/misc/tst-inotify.c b/test/misc/tst-inotify.c new file mode 100644 index 000000000..9d940f7fd --- /dev/null +++ b/test/misc/tst-inotify.c @@ -0,0 +1,66 @@ +/* vi: set sw=4 ts=4 sts=4: */ +/* + * inotify test for uClibc + * Copyright (C) 2012 by Kevin Cernekee + * + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static int +do_test(void) +{ + int ifd, fd, ret, result = 0; + struct inotify_event e; + char tfile[] = "/tmp/inotify.XXXXXX"; + + fd = mkstemp(tfile); + close(fd); + + ifd = inotify_init1(IN_NONBLOCK); + if (ifd < 0) { + perror("inotify_init1()"); + result = 1; + } + if (inotify_add_watch(ifd, tfile, IN_DELETE_SELF) < 0) { + perror("inotify_add_watch()"); + result = 1; + } + + /* nonblocking inotify should return immediately with no events */ + ret = read(ifd, &e, sizeof(e)); + if (ret != -1 || errno != EAGAIN) { + error(0, 0, "first read() returned %d", ret); + result = 1; + } + + /* generate an event */ + unlink(tfile); + + /* now check whether our event was seen */ + ret = read(ifd, &e, sizeof(e)); + if (ret != sizeof(e)) { + error(0, 0, "second read() returned %d", ret); + result = 1; + } + + if (!(e.mask & IN_DELETE_SELF)) { + error(0, 0, "incorrect event mask: %" PRIx32, e.mask); + result = 1; + } + + return result; +} + +#define TIMEOUT 5 +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" -- cgit v1.2.3