From 3664098ed0bc2c3a9c5c24faa509105f7df77d19 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Thu, 20 Jan 2022 15:10:22 -0500 Subject: [PATCH] Fix: provide membarrier_private_expedited_rseq_available on all architectures Signed-off-by: Mathieu Desnoyers Change-Id: I59afb18ba3687587b2712c3b076b170515d255bf --- tests/param_test.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/tests/param_test.c b/tests/param_test.c index a273b9d..5ed560e 100644 --- a/tests/param_test.c +++ b/tests/param_test.c @@ -1147,6 +1147,26 @@ static int set_signal_handler(void) return ret; } +static +int sys_membarrier(int cmd, int flags, int cpu_id) +{ + return syscall(__NR_membarrier, cmd, flags, cpu_id); +} + +static +bool membarrier_private_expedited_rseq_available(void) +{ + int status = sys_membarrier(MEMBARRIER_CMD_QUERY, 0, 0); + + if (status < 0) { + perror("membarrier"); + return false; + } + if (!(status & MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ)) + return false; + return true; +} + /* Test MEMBARRIER_CMD_PRIVATE_RESTART_RSEQ_ON_CPU membarrier command. */ #ifdef RSEQ_ARCH_HAS_OFFSET_DEREF_ADDV struct test_membarrier_thread_args { @@ -1217,12 +1237,6 @@ void test_membarrier_free_percpu_list(struct percpu_list *list) free(list->c[i].head); } -static -int sys_membarrier(int cmd, int flags, int cpu_id) -{ - return syscall(__NR_membarrier, cmd, flags, cpu_id); -} - /* * The manager thread swaps per-cpu lists that worker threads see, * and validates that there are no unexpected modifications. @@ -1310,20 +1324,6 @@ void *test_membarrier_manager_thread(void *arg) return NULL; } -static -bool membarrier_private_expedited_rseq_available(void) -{ - int status = sys_membarrier(MEMBARRIER_CMD_QUERY, 0, 0); - - if (status < 0) { - perror("membarrier"); - return false; - } - if (!(status & MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ)) - return false; - return true; -} - static void test_membarrier(void) { -- 2.34.1