[LTP] [PATCH] getcpu01: Reinstate node_id test

Richard Palethorpe rpalethorpe@suse.com
Tue Dec 6 17:58:40 CET 2022


Presently the node_id is only checked on i386 and it is broken. The
sched_getcpu call was substituted for getcpu when
available. sched_getcpu does not have the node_id parameter and does
not even call SYS_getcpu if it can be completed by vDSO.

Also we can at least check the node_id on x86_64 as well.

Signed-off-by: Richard Palethorpe <rpalethorpe@suse.com>
---
 testcases/kernel/syscalls/getcpu/getcpu01.c | 22 +++++++++------------
 1 file changed, 9 insertions(+), 13 deletions(-)

diff --git a/testcases/kernel/syscalls/getcpu/getcpu01.c b/testcases/kernel/syscalls/getcpu/getcpu01.c
index fcc273e29..21c67f412 100644
--- a/testcases/kernel/syscalls/getcpu/getcpu01.c
+++ b/testcases/kernel/syscalls/getcpu/getcpu01.c
@@ -15,20 +15,16 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/types.h>
+#include "tst_test.h"
 #include "lapi/syscalls.h"
 #include "lapi/cpuset.h"
-#include "tst_test.h"
 #include "config.h"
 
 static inline int get_cpu(unsigned *cpu_id,
-			  unsigned *node_id LTP_ATTRIBUTE_UNUSED,
-			  void *cache_struct LTP_ATTRIBUTE_UNUSED)
+			  unsigned *node_id)
 {
-#ifndef HAVE_SCHED_GETCPU
-	return tst_syscall(__NR_getcpu, cpu_id, node_id, cache_struct);
-#else
-	*cpu_id = sched_getcpu();
-#endif
+	return tst_syscall(__NR_getcpu, cpu_id, node_id, NULL);
+
 	return 0;
 }
 
@@ -78,7 +74,7 @@ realloc:
 	return cpu_max;
 }
 
-#ifdef __i386__
+#if  defined(__i386__) || defined(__x86_64__)
 static unsigned int get_nodeid(unsigned int cpu_id)
 {
 	DIR *directory_parent, *directory_node;
@@ -125,22 +121,22 @@ static void run(void)
 {
 	unsigned int cpu_id, node_id = 0;
 	unsigned int cpu_set;
-#ifdef __i386__
+#if defined(__i386__) || defined(__x86_64__)
 	unsigned int node_set;
 #endif
 
 	cpu_set = set_cpu_affinity();
-#ifdef __i386__
+#if defined(__i386__) || defined(__x86_64__)
 	node_set = get_nodeid(cpu_set);
 #endif
 
-	TEST(get_cpu(&cpu_id, &node_id, NULL));
+	TEST(get_cpu(&cpu_id, &node_id));
 	if (TST_RET == 0) {
 		if (cpu_id != cpu_set)
 			tst_res(TFAIL, "getcpu() returned wrong value"
 				" expected cpuid:%d, returned value cpuid: %d",
 				cpu_set, cpu_id);
-#ifdef __i386__
+#if defined(__i386__) || defined(__x86_64__)
 		else if (node_id != node_set)
 			tst_res(TFAIL, "getcpu() returned wrong value"
 				" expected  node id:%d returned  node id:%d",
-- 
2.38.1



More information about the ltp mailing list