sync_file_range01 change for arm
PATCH 1/1 sync_file_range01 change for arm
Hi,
arm use __NR_sync_file_range2 not __NR_sync_file_range for system call. the test casecheck __NR_sync_file_range for arm,
So test react "System doesn't support" for arm.
but actually arm use __NR_sync_file_range2 to support the system call.
powerpc is big endian, arm is small endian, so the parameter dealing is different.
Thanks,
Lina
From c4c30c43eba9c7af025496f23bb5936f0e9f0b76 Mon Sep 17 00:00:00 2001
From: Lina Zhao <[email protected]>
Date: Thu, 14 Oct 2010 16:21:12 +0800
Subject: [PATCH] arm use __NR_sync_file_range2 not __NR_sync_file_range for system call.
So test react "System doesn't support" for arm.
but actually arm use __NR_sync_file_range2 to support the system call.
--- .../syscalls/sync_file_range/sync_file_range01.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)
testcases/kernel/syscalls/sync_file_range/sync_file_range01.c +7 -1
@@ -96,7 +96,7 @@#include "usctest.h" #include "linux_syscall_numbers.h" -#if defined(__powerpc__) || defined(__powerpc64__) +#if defined(__powerpc__) || defined(__powerpc64__) || defined(__arm__)#ifndef __NR_sync_file_range2#define __NR_sync_file_range2 -1 //DUMMY VALUEint arch_support =0 ;//Architecure is not supported
@@ -246,6 +246,12 @@ static inline long syncfilerange(int fd, off64_t offset, off64_t nbytes,#elif (defined(__powerpc64__) || defined(__powerpc__)) && (__WORDSIZE==64 )return syscall (__NR_sync_file_range2, fd, flags, offset, nbytes); + +#elif (defined(__arm__)) + +return syscall (__NR_sync_file_range2, fd, flags,(int )offset, + (int )(offset >>32 ),(int )nbytes,(int )(nbytes >>32 )); +#else return syscall (__NR_sync_file_range, fd, offset, nbytes, flags);
Signature · 1 line
1.6.3.1
------------------------------------------------------------------------------
Download new Adobe(R) Flash(R) Builder(TM) 4
The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly Flex(R) Builder(TM)) enable the development of rich applications that run across multiple browsers and platforms. Download your free trials today!
http://p.sf.net/sfu/adobe-dev2dev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
Quoted 9 lines · lina.zhao
Hi,
arm use
__NR_sync_file_range2not__NR_sync_file_rangefor system call. the test casecheck__NR_sync_file_rangefor arm,
So test react "System doesn't support" for arm.
but actually arm use__NR_sync_file_range2to support the system call.powerpc is big endian, arm is small endian, so the parameter dealing is different.
Not true. ARM can be biendian, just like MIPS... A better test needs to be derived for endianness than this.
-Garrett
------------------------------------------------------------------------------
Download new Adobe(R) Flash(R) Builder(TM) 4
The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly Flex(R) Builder(TM)) enable the development of rich applications that run across multiple browsers and platforms. Download your free trials today!
http://p.sf.net/sfu/adobe-dev2dev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
now endianness has been checked! see the patch
Quoted 9 lines · lina.zhao
Quoted 8 lines
Hi,
arm use
__NR_sync_file_range2not__NR_sync_file_rangefor system call. the test casecheck__NR_sync_file_rangefor arm,
So test react "System doesn't support" for arm.
but actually arm use__NR_sync_file_range2to support the system call.
Quoted 9 lines
Quoted 3 lines
powerpc is big endian, arm is small endian, so the parameter dealing is different.
Not true. ARM can be biendian, just like MIPS... A better test needs to be derived for endianness than this.
-Garrett
From cc07d890ae71837512731a0bf31006db8d717f8a Mon Sep 17 00:00:00 2001
From: Lina Zhao <[email protected]>
Date: Tue, 19 Oct 2010 10:44:39 +0800
Subject: [PATCH] sync_file_rang01.c changed for arm
--- .../syscalls/sync_file_range/sync_file_range01.c | 36 ++++++++++++++------ 1 files changed, 25 insertions(+), 11 deletions(-)
testcases/kernel/syscalls/sync_file_range/sync_file_range01.c +3 -1
@@ -96,12 +96,13 @@#include "usctest.h" #include "linux_syscall_numbers.h" -#if defined(__powerpc__) || defined(__powerpc64__) +#if defined(__powerpc__) || defined(__powerpc64__)|| defined(__arm__)#ifndef __NR_sync_file_range2#define __NR_sync_file_range2 -1 //DUMMY VALUEint arch_support =0 ;//Architecure is not supported #else int arch_support =1 ;//Architecture is supported +char call_num =1 ;//Use __NR_sync_file_range2 as syscall #endif #else #ifndef __NR_sync_file_range
@@ -109,6 +110,7 @@ int arch_support = 1; //Architecture is supportedint arch_support =0 ;#else int arch_support =1 ; +char call_num =0 ;#endif #endif
@@ -139,7 +141,7 @@ struct test_data_t {int error; } test_data[] = { {
&bfd, 0, 1, SYNC_FILE_RANGE_WRITE, EBADF}, { &sfd, 0, 1, SYNC_FILE_RANGE_WAIT_AFTER, ESPIPE}, {
&filed, -1, 1, SYNC_FILE_RANGE_WAIT_BEFORE, EINVAL}, {
&filed, 0, -1, SYNC_FILE_RANGE_WRITE, EINVAL}, {
@@ -238,22 +240,33 @@ static inline long syncfilerange(int fd, off64_t offset, off64_t nbytes,
unsigned int flags)
{
-#if (defined(__powerpc64__) || defined(__powerpc__)) && (__WORDSIZE==32)
+ if (call_num){
+#if (__WORDSIZE==64)
- return syscall(__NR_sync_file_range2, fd, flags, (int)(offset >> 32),
- (int)offset, (int)(nbytes >> 32), (int)nbytes);
+ return syscall(__NR_sync_file_range2, fd, flags, offset, nbytes);
-#elif (defined(__powerpc64__) || defined(__powerpc__)) && (__WORDSIZE==64) +#elif (__WORDSIZE==32)
- return syscall(__NR_sync_file_range2, fd, flags, offset, nbytes);
-#else
+ if (check_endian()) //little_endian
+ return syscall(__NR_sync_file_range2, fd, flags,(int)offset,
+ (int)(offset >> 32),(int)nbytes,(int)(nbytes >> 32));
+ else //big_endian
+ return syscall(__NR_sync_file_range2, fd, flags, (int)(offset >> 32),
+ (int)offset, (int)(nbytes >> 32), (int)nbytes);
+#endif
+ else
return syscall(__NR_sync_file_range, fd, offset, nbytes, flags);
-#endif
- return 0;
}
+static int check_endian( void )
+{
+ int x = 1;
+ return ((char)(x) == x);
+}
+
+
/******************************************************************************/
/* */
/* Function: main */
@@ -294,7 +307,8 @@ int main(int ac, /* number of command line parameters */
}
#else
/* For other archs, need kernel version > 2.6.16 */
-
+ if (arch_support)printf("arch supported!\n");
+ if (tst_kvercmp(2, 6, 17) < 0)printf("kernel cmp fail\n");
if (!arch_support || (tst_kvercmp(2, 6, 17) < 0)) {
tst_resm(TCONF, "System doesn't support execution of the test"); tst_exit();
Signature · 1 line
1.6.3.1
------------------------------------------------------------------------------
Download new Adobe(R) Flash(R) Builder(TM) 4
The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly Flex(R) Builder(TM)) enable the development of rich applications that run across multiple browsers and platforms. Download your free trials today!
http://p.sf.net/sfu/adobe-dev2dev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
Quoted 107 lines · lina.zhao
now endianness has been checked! see the patch
Quoted 9 lines · lina.zhao
Quoted 8 lines
Hi,
arm use
__NR_sync_file_range2not__NR_sync_file_rangefor system call. the test casecheck__NR_sync_file_rangefor arm,
So test react "System doesn't support" for arm.
but actually arm use__NR_sync_file_range2to support the system call.Quoted 9 lines
Quoted 3 lines
powerpc is big endian, arm is small endian, so the parameter dealing is different.
Not true. ARM can be biendian, just like MIPS... A better test needs to be derived for endianness than this.
-GarrettFrom
cc07d890ae71837512731a0bf31006db8d717f8aMon Sep 17 00:00:00 2001
From: Lina Zhao <[email protected]>
Date: Tue, 19 Oct 2010 10:44:39 +0800
Subject: [PATCH]sync_file_rang01.cchanged for arm---
.../syscalls/sync_file_range/sync_file_range01.c| 36 ++++++++++++++------1 files changed, 25 insertions(+), 11 deletions(-)testcases/kernel/syscalls/sync_file_range/sync_file_range01.c +1
-1@@ -96,12 +96,13 @@#include "usctest.h" #include "linux_syscall_numbers.h" -#if defined(__powerpc__) || defined(__powerpc64__) +#if defined(__powerpc__) || defined(__powerpc64__)|| defined(__arm__)#ifndef __NR_sync_file_range2#define __NR_sync_file_range2 -1 //DUMMY VALUEint
arch_support= 0; //Architecure is not supported
#else
intarch_support= 1; //Architecture is supported
+charcall_num= 1; //Use__NR_sync_file_range2as syscall
#endif
#else
#ifndef__NR_sync_file_rangetestcases/kernel/syscalls/sync_file_range/sync_file_range01.c +20
-8@@ -109,6 +110,7 @@ int arch_support = 1; //Architecture is supportedint arch_support =0 ;#else int arch_support =1 ; +char call_num =0 ;#endif #endif @@ -139,7 +141,7 @@ struct test_data_t {int error; } test_data[] = { { &bfd, 0, 1, SYNC_FILE_RANGE_WRITE, EBADF}, { &sfd, 0, 1, SYNC_FILE_RANGE_WAIT_AFTER, ESPIPE}, { &filed, -1, 1, SYNC_FILE_RANGE_WAIT_BEFORE, EINVAL}, { &filed, 0, -1, SYNC_FILE_RANGE_WRITE, EINVAL}, {@@ -238,22 +240,33 @@ static inline long syncfilerange(int fd, off64_t offset, off64_t nbytes, unsigned int flags) { -#if (defined(__powerpc64__) || defined(__powerpc__)) && (__WORDSIZE==32 ) +if (call_num){ +#if (__WORDSIZE==64 ) -return syscall (__NR_sync_file_range2, fd, flags, (int )(offset >>32 ), - (int )offset, (int )(nbytes >>32 ), (int )nbytes); +return syscall (__NR_sync_file_range2, fd, flags, offset, nbytes); -#elif (defined(__powerpc64__) || defined(__powerpc__)) && (__WORDSIZE==64 ) +#elif (__WORDSIZE==32 ) -return syscall (__NR_sync_file_range2, fd, flags, offset, nbytes); -#else +if (check_endian ())//little_endian +return syscall (__NR_sync_file_range2, fd, flags,(int )offset, + (int )(offset >>32 ),(int )nbytes,(int )(nbytes >>32 )); +else //big_endian +return syscall (__NR_sync_file_range2, fd, flags, (int )(offset >>32 ), + (int )offset, (int )(nbytes >>32 ), (int )nbytes); +#endif + else return syscall(__NR_sync_file_range, fd, offset, nbytes, flags); -#endif -return 0 ; } +static int check_endian (void ) +{ +int x =1 ; +return ((char )(x) == x); +} + +/******************************************************************************/ /* */ /* Function: main */
testcases/kernel/syscalls/sync_file_range/sync_file_range01.c int main(int ac, /* number of command line parameters */ · line 314
Quoted 9 lines
testcases/kernel/syscalls/sync_file_range/sync_file_range01.c +2
-1@@ -294,7 +307,8 @@ int main(int ac, /* number of command line parameters */ }#else /* For other archs, need kernel version > 2.6.16 */ - +if (arch_support)printf ("arch supported!\n" ); +if (tst_kvercmp (2 ,6 ,17 ) <0 )printf ("kernel cmp fail\n" );if (!arch_support || (tst_kvercmp (2 ,6 ,17 ) <0 )) {tst_resm (TCONF ,"System doesn't support execution of the test" );tst_exit ();
Close... here's one solution I've seen:
http://c-faq.com/misc/endiantest.html
And FWIW this should be available as a generalized function / macro in include / lib .
Cheers,
-Garrett
------------------------------------------------------------------------------
Download new Adobe(R) Flash(R) Builder(TM) 4
The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly
Flex(R) Builder(TM)) enable the development of rich applications that run across multiple browsers and platforms. Download your free trials today!
http://p.sf.net/sfu/adobe-dev2dev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
Hi!
Quoted 10 lines
Quoted 7 lines
arm use
__NR_sync_file_range2not__NR_sync_file_rangefor system call. the test casecheck__NR_sync_file_rangefor arm,
So test react "System doesn't support" for arm.
but actually arm use__NR_sync_file_range2to support the system call.powerpc is big endian, arm is small endian, so the parameter dealing is different.
Not true. ARM can be biendian, just like MIPS... A better test needs to be derived for endianness than this.
Actually there seems to be some little endian PPC machines out there,
see: http://lwn.net/Articles/408340/
Signature · 13 lines
Cyril Hrubis [email protected] ------------------------------------------------------------------------------ Nokia and AT&T present the 2010 Calling All Innovators-North America contest Create new apps & games for the Nokia N8 for consumers in U.S. and Canada $10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store http://p.sf.net/sfu/nokia-dev2dev _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list