Old glibc (like in RHEL4) has modify_ldt_ldt_s instead of user_desc structure defined in asm/ldt.h. It should follow the example of modify_ldt test cases to choose the feasible structure based on build-time checking. Also, a new header file has been created to handle code duplication.
Signed-off-by: CAI Qian <[email protected]> .../syscalls/set_thread_area/set_thread_area.h | 32 ++++++++++++++++++++ .../syscalls/set_thread_area/set_thread_area01.c | 13 +------- .../syscalls/set_thread_area/set_thread_area02.c | 14 +------- 3 files changed, 36 insertions(+), 23 deletions(-) diff --git a/testcases/kernel/syscalls/set_thread_area/set_thread_area.h b/testcases/kernel/syscalls/set_thread_area/set_thread_area.h new file mode 100644 index 0000000..66e9278 --- /dev/null +++ b/testcases/kernel/syscalls/set_thread_area/set_thread_area.h @@ -0,0 +1,32 @@ +#include <stdio.h> +#include <errno.h> +#include <linux/unistd.h> + +/* Harness Specific Include Files. */ +#include "test.h" +#include "usctest.h" +#include "linux_syscall_numbers.h" +#include "config.h" + +#if defined HAVE_ASM_LDT_H +#include <asm/ldt.h> + +#if defined HAVE_STRUCT_USER_DESC +typedef struct user_desc thread_area_s; +#elif defined HAVE_STRUCT_MODIFY_LDT_LDT_S +typedef struct modify_ldt_ldt_s thread_area_s; +#else +typedef struct user_desc { + unsigned int entry_number; + unsigned long int base_addr; + unsigned int limit; + unsigned int seg_32bit:1; + unsigned int contents:2; + unsigned int read_exec_only:1; + unsigned int limit_in_pages:1; + unsigned int seg_not_present:1; + unsigned int useable:1; + unsigned int empty:25; +} thread_area_s; +#endif /* HAVE_STRUCT_USER_DESC */ +#endif /* HAVE_ASM_LDT_H */ 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 6f10c05..a6aacf8 100644 --- a/testcases/kernel/syscalls/set_thread_area/set_thread_area01.c +++ b/testcases/kernel/syscalls/set_thread_area/set_thread_area01.c @@ -48,15 +48,8 @@ /* History: Porting from Crackerjack to LTP is done by */ /* Manas Kumar Nayak [email protected]> */ /******************************************************************************/ -#include <stdio.h> -#include <errno.h> -#include <linux/unistd.h> +#include "set_thread_area.h" -/* Harness Specific Include Files. */ -#include "test.h" -#include "usctest.h" -#include "linux_syscall_numbers.h" -#include "config.h" /* Global Variables */ char *TCID = "set_thread_area01"; /* Test program identifier.*/ @@ -64,8 +57,6 @@ int testno; int TST_TOTAL = 2; /* total number of tests in this file. */ #if defined HAVE_ASM_LDT_H -#include <asm/ldt.h> - /* Extern Global Variables */ extern int Tst_count; /* counter for tst_xxx routines. */ extern char *TESTDIR; /* temporary dir created by tst_tmpdir() */ @@ -124,7 +115,7 @@ void setup() { int main(int ac, char **av) { - struct user_desc u_info; + thread_area_s u_info; int lc; /* loop counter */ char *msg; /* message returned from parse_opts */ diff --git a/testcases/kernel/syscalls/set_thread_area/set_thread_area02.c b/testcases/kernel/syscalls/set_thread_area/set_thread_area02.c index 3effebd..1b351c1 100644 --- a/testcases/kernel/syscalls/set_thread_area/set_thread_area02.c +++ b/testcases/kernel/syscalls/set_thread_area/set_thread_area02.c @@ -49,15 +49,7 @@ /* History: Porting from Crackerjack to LTP is done by */ /* Manas Kumar Nayak [email protected]> */ /******************************************************************************/ -#include <stdio.h> -#include <errno.h> -#include <linux/unistd.h> - -/* Harness Specific Include Files. */ -#include "test.h" -#include "usctest.h" -#include "linux_syscall_numbers.h" -#include "config.h" +#include "set_thread_area.h" /* Global Variables */ char *TCID = "set_thread_area_02"; /* Test program identifier.*/ @@ -65,8 +57,6 @@ int testno; int TST_TOTAL = 3; /* total number of tests in this file. */ #if defined HAVE_ASM_LDT_H -#include <asm/ldt.h> - /* Extern Global Variables */ extern int Tst_count; /* counter for tst_xxx routines. */ extern char *TESTDIR; /* temporary dir created by tst_tmpdir() */ @@ -125,7 +115,7 @@ void setup() { int main(int ac, char **av) { - struct user_desc u_info; + thread_area_s u_info; int lc; /* loop counter */ char *msg; /* message returned from parse_opts */ ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
