diff options
author | Ulrich Drepper <drepper@redhat.com> | 2006-01-04 19:34:40 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2006-01-04 19:34:40 +0000 |
commit | 4da28a490bc322423d9b26de8abe377965666ef9 (patch) | |
tree | 2f7b9e1eaaff2f1bf0893710415e6bc62c822210 | |
parent | 8e856b5a9aeb2cf6c468b65be5a6efef2dd1bbb5 (diff) | |
download | glibc-4da28a490bc322423d9b26de8abe377965666ef9.zip glibc-4da28a490bc322423d9b26de8abe377965666ef9.tar.gz glibc-4da28a490bc322423d9b26de8abe377965666ef9.tar.bz2 |
Test for lio_listio returning an error for LIO_WAIT if an IO request failed.
-rw-r--r-- | rt/tst-aio8.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/rt/tst-aio8.c b/rt/tst-aio8.c new file mode 100644 index 0000000..531a08a --- /dev/null +++ b/rt/tst-aio8.c @@ -0,0 +1,38 @@ +#include <aio.h> +#include <errno.h> +#include <fcntl.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> + +static int +do_test (void) +{ + int fd = open ("/dev/full", O_RDWR); + if (fd == -1) + { + puts ("could not open /dev/full"); + return 0; + } + + struct aiocb req; + req.aio_fildes = fd; + req.aio_lio_opcode = LIO_WRITE; + req.aio_reqprio = 0; + req.aio_buf = (void *) "hello"; + req.aio_nbytes = 5; + req.aio_sigevent.sigev_notify = SIGEV_NONE; + + struct aiocb *list[1]; + list[0] = &req; + + int r = lio_listio (LIO_WAIT, list, 1, NULL); + int e = errno; + + printf ("r = %d, e = %d (%s)\n", r, e, strerror (e)); + + return r != -1 || e != EIO; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" |