[LTP] [PATCH] set_thread_area01: fix build issue

Yury Norov ynorov@caviumnetworks.com
Sat Dec 5 23:28:22 CET 2015


get_thread_area() and set_thread_area() system calls are not supported
on a set of targets. Corresponding syscall numbers are not defined, and
in LTP they become defined as '-1' in <linux_syscall_numbers.h> header.

This test uses switch-case for its own purposes with _NR_get_thread_area
and __NR_set_thread_area as case selections. It causes compile-time
error, at least for ARM target.

In this patch, the test code is refactored to remove switch-case, and
repair test build.

By the way, warning about comparsion of signed and unsigned fixed too.

Signed-off-by: Yury Norov <ynorov@caviumnetworks.com>
---
 .../syscalls/set_thread_area/set_thread_area01.c   | 39 +++++++++-------------
 1 file changed, 15 insertions(+), 24 deletions(-)

diff --git a/testcases/kernel/syscalls/set_thread_area/set_thread_area01.c b/testcases/kernel/syscalls/set_thread_area/set_thread_area01.c
index 511543c..11b76d1 100644
--- a/testcases/kernel/syscalls/set_thread_area/set_thread_area01.c
+++ b/testcases/kernel/syscalls/set_thread_area/set_thread_area01.c
@@ -21,6 +21,9 @@
 
 #include "set_thread_area.h"
 
+#define SET_THREAD_AREA	"set_thread_area()"
+#define GET_THREAD_AREA	"get_thread_area()"
+
 char *TCID = "set_thread_area_01";
 int TST_TOTAL = 6;
 
@@ -37,6 +40,7 @@ static void setup(void)
 
 struct test {
 	int syscall;
+	const char *const syscall_name;
 	thread_area_s *u_info;
 	int exp_ret;
 	int exp_errno;
@@ -52,31 +56,18 @@ static struct user_desc u_info1 = {.entry_number = -1 };
 static struct user_desc u_info2 = {.entry_number = -2 };
 
 static struct test tests[] = {
-	{__NR_set_thread_area, &u_info1, 0, 0},
-	{__NR_get_thread_area, &u_info1, 0, 0},
-	{__NR_set_thread_area, &u_info2, -1, EINVAL},
-	{__NR_get_thread_area, &u_info2, -1, EINVAL},
-	{__NR_set_thread_area, (void *)-9, -1, EFAULT},
-	{__NR_get_thread_area, (void *)-9, -1, EFAULT},
+	{__NR_set_thread_area, SET_THREAD_AREA, &u_info1, 0, 0},
+	{__NR_get_thread_area, GET_THREAD_AREA, &u_info1, 0, 0},
+	{__NR_set_thread_area, SET_THREAD_AREA, &u_info2, -1, EINVAL},
+	{__NR_get_thread_area, GET_THREAD_AREA, &u_info2, -1, EINVAL},
+	{__NR_set_thread_area, SET_THREAD_AREA, (void *)-9, -1, EFAULT},
+	{__NR_get_thread_area, GET_THREAD_AREA, (void *)-9, -1, EFAULT},
 };
 
-static const char *get_name(int syscall)
-{
-	switch (syscall) {
-	case __NR_set_thread_area:
-		return "set_thread_area()";
-		break;
-	case __NR_get_thread_area:
-		return "get_thread_area()";
-		break;
-	default:
-		return "invalid syscall";
-	}
-}
-
 int main(int argc, char *argv[])
 {
-	int lc, i;
+	int lc;
+	unsigned i;
 
 	tst_parse_opts(argc, argv, NULL, NULL);
 
@@ -88,7 +79,7 @@ int main(int argc, char *argv[])
 
 			if (TEST_RETURN != tests[i].exp_ret) {
 				tst_resm(TFAIL, "%s returned %li expected %i",
-					 get_name(tests[i].syscall),
+					 tests[i].syscall_name,
 					 TEST_RETURN, tests[i].exp_ret);
 				continue;
 			}
@@ -96,7 +87,7 @@ int main(int argc, char *argv[])
 			if (TEST_ERRNO != tests[i].exp_errno) {
 				tst_resm(TFAIL,
 					 "%s failed with %i (%s) expected %i (%s)",
-					 get_name(tests[i].syscall), TEST_ERRNO,
+					 tests[i].syscall_name, TEST_ERRNO,
 					 strerror(TEST_ERRNO),
 					 tests[i].exp_errno,
 					 strerror(tests[i].exp_errno));
@@ -104,7 +95,7 @@ int main(int argc, char *argv[])
 			}
 
 			tst_resm(TPASS, "%s returned %li errno %i (%s)",
-				 get_name(tests[i].syscall), TEST_RETURN,
+				 tests[i].syscall_name, TEST_RETURN,
 				 TEST_ERRNO, strerror(TEST_ERRNO));
 		}
 	}
-- 
2.5.0



More information about the Ltp mailing list