[LTP] [PATCH v4 3/7] numa_helper: added a new function is_numa()

Zhouping Liu
2013-03-19T03:43:02Z

Added a new function is_numa(), which is desinged to judge
whether a system contains more than 1 available numa nodes
or not, and lots of cases need it.

Signed-off-by: Zhouping Liu <zliu@redhat.com>
---
testcases/kernel/include/numa_helper.h | 1 +
testcases/kernel/lib/numa_helper.c | 24 ++++++++++++++++++++++++
2 files changed, 25 insertions(+)

diff --git a/testcases/kernel/include/numa_helper.h b/testcases/kernel/include/numa_helper.h
index 8e82d7b..251fd54 100644
--- a/testcases/kernel/include/numa_helper.h
+++ b/testcases/kernel/include/numa_helper.h
@@ -34,5 +34,6 @@ unsigned long get_max_node(void);
int get_allowed_nodes_arr(int flag, int *num_nodes, int **nodes);
int get_allowed_nodes(int flag, int count, ...);
void nh_dump_nodes();
+int is_numa(void (*cleanup_fn)(void));

#endif
diff --git a/testcases/kernel/lib/numa_helper.c b/testcases/kernel/lib/numa_helper.c
index 4ab8e3c..4157816 100644
--- a/testcases/kernel/lib/numa_helper.c
+++ b/testcases/kernel/lib/numa_helper.c
@@ -265,3 +265,27 @@ void nh_dump_nodes()
print_node_info(NH_CPUS);
print_node_info(NH_MEMS | NH_CPUS);
}
+
+/*
+ * is_numa - judge a system is NUMA system or not
+ * NOTE: the function is designed to try to find more than
+ * 1 available node, at least each node contains memory.
+ * WARN: Don't use this func in child, as it calls tst_brkm()
+ * RETURNS:
+ * 0 - it's not a NUMA system
+ * 1 - it's a NUMA system
+ */
+int is_numa(void (*cleanup_fn)(void))
+{
+ int ret;
+ int numa_nodes = 0;
+
+ ret = get_allowed_nodes_arr(NH_MEMS, &numa_nodes, NULL);
+ if (ret < 0)
+ tst_brkm(TBROK | TERRNO, cleanup_fn, "get_allowed_nodes_arr");
+
+ if (numa_nodes > 1)
+ return 1;
+ else
+ return 0;
+}