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 {
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.
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)
{