-// SPDX-License-Identifier: LGPL-2.1-only
+// SPDX-License-Identifier: MIT
+// SPDX-FileCopyrightText: 2020 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
/*
* Basic test coverage for critical regions and rseq_current_cpu().
*/
#include "tap.h"
-void test_cpu_pointer(void)
+static void test_cpu_pointer(void)
{
cpu_set_t affinity, test_affinity;
int ret, i;
CPU_ZERO(&test_affinity);
for (i = 0; i < CPU_SETSIZE; i++) {
if (CPU_ISSET(i, &affinity)) {
+ int node;
+
CPU_SET(i, &test_affinity);
ret = sched_setaffinity(0, sizeof(test_affinity),
ok(rseq_current_cpu() == (unsigned int) i, "rseq_current_cpu returns CPU %d", i);
ok(rseq_current_cpu_raw() == i, "rseq_current_cpu_raw returns CPU %d", i);
ok(rseq_cpu_start() == (unsigned int) i, "rseq_cpu_start returns CPU %d", i);
-
+ node = rseq_fallback_current_node();
+ ok(rseq_fallback_current_node() == node, "rseq_fallback_current_node returns node %d", node);
CPU_CLR(i, &test_affinity);
}
}
/*
* Skip all tests if the rseq syscall is unavailable
*/
- if (rseq_available()) {
+ if (rseq_available(RSEQ_AVAILABLE_QUERY_KERNEL)) {
plan_no_plan();
} else {
plan_skip_all("The rseq syscall is unavailable");