]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add a test program for the membarrier() system call
authorBart Van Assche <bart.vanassche@wdc.com>
Thu, 14 Jun 2018 20:39:30 +0000 (13:39 -0700)
committerBart Van Assche <bart.vanassche@wdc.com>
Fri, 15 Jun 2018 15:25:32 +0000 (08:25 -0700)
Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
configure.ac
none/tests/linux/Makefile.am
none/tests/linux/membarrier.c [new file with mode: 0644]
none/tests/linux/membarrier.stderr.exp [new file with mode: 0644]
none/tests/linux/membarrier.vgtest [new file with mode: 0644]

index 306fbc78e7ed4e9a4d5d4cc0552e0be83fab3022..71c96ed52b31c7baf192d636c930a626ef5d32da 100644 (file)
@@ -1727,6 +1727,20 @@ if test "$sys_user_has_user_regs" = "yes"; then
             [Define to 1 if <sys/user.h> defines struct user_regs_struct])
 fi
 
+AC_MSG_CHECKING([for __NR_membarrier])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <linux/unistd.h>
+]], [[
+return __NR_membarrier
+]])], [
+ac_have_nr_membarrier=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_nr_membarrier=no
+AC_MSG_RESULT([no])
+])
+
+AM_CONDITIONAL(HAVE_NR_MEMBARRIER, [test x$ac_have_nr_membarrier = xyes])
 
 #----------------------------------------------------------------------------
 # Checking for supported compiler flags.
index 299476dfd9d5aeee080f08549a4e9f824207396b..d16ac4d0f41daf99970b9e8da44932e77693d621 100644 (file)
@@ -8,6 +8,7 @@ EXTRA_DIST = \
        brk-overflow1.stderr.exp brk-overflow1.vgtest \
        brk-overflow2.stderr.exp brk-overflow2.vgtest \
        clonev.stdout.exp clonev.stderr.exp clonev.vgtest \
+        membarrier.sterr.exp membarrier.vgtest \
        mremap.stderr.exp mremap.stderr.exp-glibc27 mremap.stdout.exp \
            mremap.vgtest \
        mremap2.stderr.exp mremap2.stdout.exp mremap2.vgtest \
@@ -32,6 +33,10 @@ check_PROGRAMS = \
        pthread-stack \
        stack-overflow
 
+if HAVE_NR_MEMBARRIER
+        check_PROGRAMS += membarrier
+endif
+
 
 AM_CFLAGS   += $(AM_FLAG_M3264_PRI)
 AM_CXXFLAGS += $(AM_FLAG_M3264_PRI)
diff --git a/none/tests/linux/membarrier.c b/none/tests/linux/membarrier.c
new file mode 100644 (file)
index 0000000..f7199ac
--- /dev/null
@@ -0,0 +1,10 @@
+#include <stdio.h>
+#include <unistd.h>
+#include <linux/unistd.h>
+
+int main(int argc, char **argv)
+{
+   syscall(__NR_membarrier, 0/*query*/);
+   fprintf(stderr, "Done.\n");
+   return 0;
+}
diff --git a/none/tests/linux/membarrier.stderr.exp b/none/tests/linux/membarrier.stderr.exp
new file mode 100644 (file)
index 0000000..eb9b6c1
--- /dev/null
@@ -0,0 +1,3 @@
+
+Done.
+
diff --git a/none/tests/linux/membarrier.vgtest b/none/tests/linux/membarrier.vgtest
new file mode 100644 (file)
index 0000000..542e2ca
--- /dev/null
@@ -0,0 +1 @@
+prog: membarrier