|
From: Bart V. A. <bva...@so...> - 2019-08-17 01:11:12
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=0f7483d1d8a8ade23123b498dfbd61d1c41d9f45 commit 0f7483d1d8a8ade23123b498dfbd61d1c41d9f45 Author: Stefan Maksimovic <ste...@rt...> Date: Fri Aug 16 16:23:21 2019 -0700 memcheck/tests/sys-preadv2_pwritev2: Check whether these syscalls are supported [ bvanassche: changed the order of check_PROGRAMS ] Diff: --- .gitignore | 1 + memcheck/tests/linux/Makefile.am | 1 + memcheck/tests/linux/check_preadv2_pwritev2.c | 19 +++++++++++++++++++ memcheck/tests/linux/sys-preadv2_pwritev2.vgtest | 1 + 4 files changed, 22 insertions(+) diff --git a/.gitignore b/.gitignore index 9ba42ee..7c3d304 100644 --- a/.gitignore +++ b/.gitignore @@ -1093,6 +1093,7 @@ /memcheck/tests/linux/.deps /memcheck/tests/linux/brk /memcheck/tests/linux/capget +/memcheck/tests/linux/check_preadv2_pwritev2 /memcheck/tests/linux/dlclose_leak /memcheck/tests/linux/dlclose_leak_so.so /memcheck/tests/linux/getregset diff --git a/memcheck/tests/linux/Makefile.am b/memcheck/tests/linux/Makefile.am index e133258..14d4a07 100644 --- a/memcheck/tests/linux/Makefile.am +++ b/memcheck/tests/linux/Makefile.am @@ -33,6 +33,7 @@ EXTRA_DIST = \ check_PROGRAMS = \ brk \ capget \ + check_preadv2_pwritev2 \ dlclose_leak dlclose_leak_so.so \ ioctl-tiocsig \ getregset \ diff --git a/memcheck/tests/linux/check_preadv2_pwritev2.c b/memcheck/tests/linux/check_preadv2_pwritev2.c new file mode 100644 index 0000000..5333679 --- /dev/null +++ b/memcheck/tests/linux/check_preadv2_pwritev2.c @@ -0,0 +1,19 @@ +#include <sys/syscall.h> +#include <errno.h> +#include <unistd.h> +#include <stddef.h> + +int main(int argc, char **argv) +{ + errno = 0; + int has_preadv2 = 0; + int has_pwritev2 = 0; + + syscall(__NR_preadv2, 0, NULL, 0, 0, 0); + has_preadv2 = errno != ENOSYS; + + syscall(__NR_pwritev2, 0, NULL, 0, 0, 0); + has_pwritev2 = errno != ENOSYS; + + return !(has_preadv2 && has_pwritev2); +} diff --git a/memcheck/tests/linux/sys-preadv2_pwritev2.vgtest b/memcheck/tests/linux/sys-preadv2_pwritev2.vgtest index 5cd23aa..33e3252 100644 --- a/memcheck/tests/linux/sys-preadv2_pwritev2.vgtest +++ b/memcheck/tests/linux/sys-preadv2_pwritev2.vgtest @@ -1,3 +1,4 @@ prereq: test -e sys-preadv2_pwritev2 +prereq: ./check_preadv2_pwritev2 prog: sys-preadv2_pwritev2 vgopts: -q |