]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
memcheck/tests/sys-preadv2_pwritev2: Check whether these syscalls are supported
authorStefan Maksimovic <stefan.maksimovic@rt-rk.com>
Fri, 16 Aug 2019 23:23:21 +0000 (16:23 -0700)
committerBart Van Assche <bvanassche@acm.org>
Sat, 17 Aug 2019 01:09:44 +0000 (18:09 -0700)
[ bvanassche: changed the order of check_PROGRAMS ]

.gitignore
memcheck/tests/linux/Makefile.am
memcheck/tests/linux/check_preadv2_pwritev2.c [new file with mode: 0644]
memcheck/tests/linux/sys-preadv2_pwritev2.vgtest

index 9ba42ee4ac8e82722f3451a0cfeebdf1b9723251..7c3d304435e50e5b6d9b8b1cab5af3db6569922b 100644 (file)
 /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
index e13325869de2af592c09d1bf5fd926e73e40b09a..14d4a0716240a8afeae110d63c8317e2c3969044 100644 (file)
@@ -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 (file)
index 0000000..5333679
--- /dev/null
@@ -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);
+}
index 5cd23aacda47bbc565a4a8d348128dd318a7e2e6..33e32522d57e3d4c6ad1861c48cc40effa35b5c7 100644 (file)
@@ -1,3 +1,4 @@
 prereq: test -e sys-preadv2_pwritev2
+prereq: ./check_preadv2_pwritev2
 prog: sys-preadv2_pwritev2
 vgopts: -q