[PATCH 2/2] tests: check decoding of readahead syscall
Eugene Syromyatnikov
evgsyr at gmail.com
Thu Sep 1 11:23:35 UTC 2016
On Thu, Sep 1, 2016 at 9:39 AM, Dmitry V. Levin <ldv at altlinux.org> wrote:
> On Thu, Sep 01, 2016 at 02:43:30AM +0300, Eugene Syromyatnikov wrote:
>> * tests/readahead.c: New file.
>> * tests/readahead.test: New test.
>> * tests/.gitignore: Add readahead.
>> * tests/Makefile.am (check_PROGRAMS): Likewise.
>> (DECODER_TESTS): Add readahead.test.
>> ---
>> Simple test for simple decoder.
>>
>> tests/.gitignore | 1 +
>> tests/Makefile.am | 2 ++
>> tests/readahead.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++
>> tests/readahead.test | 6 +++++
>> 4 files changed, 72 insertions(+)
>> create mode 100644 tests/readahead.c
>> create mode 100755 tests/readahead.test
>>
>> diff --git a/tests/.gitignore b/tests/.gitignore
>> index 5c5d092..8c41bea 100644
>> --- a/tests/.gitignore
>> +++ b/tests/.gitignore
>> @@ -185,6 +185,7 @@ pselect6
>> ptrace
>> pwritev
>> read-write
>> +readahead
>> readdir
>> readlink
>> readlinkat
>> diff --git a/tests/Makefile.am b/tests/Makefile.am
>> index b879bf4..d7421fc 100644
>> --- a/tests/Makefile.am
>> +++ b/tests/Makefile.am
>> @@ -241,6 +241,7 @@ check_PROGRAMS = \
>> ptrace \
>> pwritev \
>> read-write \
>> + readahead \
>> readdir \
>> readlink \
>> readlinkat \
>> @@ -568,6 +569,7 @@ DECODER_TESTS = \
>> ptrace.test \
>> pwritev.test \
>> read-write.test \
>> + readahead.test \
>> readdir.test \
>> readlink.test \
>> readlinkat.test \
>> diff --git a/tests/readahead.c b/tests/readahead.c
>> new file mode 100644
>> index 0000000..307dbff
>> --- /dev/null
>> +++ b/tests/readahead.c
>> @@ -0,0 +1,63 @@
>> +#include "tests.h"
>> +#include <asm/unistd.h>
>> +
>> +#ifdef __NR_readahead
>> +
>> +# include <fcntl.h>
>> +# include <stdio.h>
>> +
>> +static const int fds[] = {
>> + -0x80000000,
>> + -100,
>> + -1,
>> + 0,
>> + 1,
>> + 2,
>> + 0x7fffffff,
>> +};
>> +
>> +static const off64_t offsets[] = {
>> + -0x8000000000000000LL,
>> + -0x5060708090a0b0c0LL,
>> + -1LL,
>> + 0,
>> + 1,
>> + 0xbadfaced,
>> + 0x7fffffffffffffffLL,
>> +};
>> +
>> +static const unsigned long counts[] = {
>> + 0UL,
>> + 0xdeadca75,
>> + (unsigned long)0xface1e55beeff00dULL,
>> + (unsigned long)0xffffffffffffffffULL,
>> +};
>> +
>> +int
>> +main(void)
>> +{
>> + unsigned i;
>> + unsigned j;
>> + unsigned k;
>> + ssize_t rc;
>> +
>> + for (i = 0; i < ARRAY_SIZE(fds); i++)
>> + for (j = 0; j < ARRAY_SIZE(offsets); j++)
>> + for (k = 0; k < ARRAY_SIZE(counts); k++) {
>> + rc = readahead(fds[i], offsets[j], counts[k]);
>> +
>> + printf("readahead(%d, %lld, %lu) = "
>> + "%ld %s (%m)\n", fds[i],
>> + (long long)offsets[j], counts[k], rc,
>> + errno2name());
>
> What if this syscall returned 0?
Well, I assumed that stdin/stdout/stderr are not normal files (which
is the case in test suite) and in this case readahead should return
EINVAL. I can add support for this if needed.
>
> --
> ldv
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> Strace-devel mailing list
> Strace-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/strace-devel
>
--
Eugene "eSyr" Syromyatnikov
mailto:evgSyr at gmail.com
xmpp:eSyr at jabber.{ru|org}
More information about the Strace-devel
mailing list