From: "lina.zhao" <lina.zhao@windriver.com>
To: Garrett Cooper <yanegomi@gmail.com>
Cc: ltp-list@lists.sourceforge.net
Subject: Re: [LTP] [patch] sync_file_range01 change for arm
Date: Tue, 19 Oct 2010 13:12:03 +0800 [thread overview]
Message-ID: <4CBD28A3.5000709@windriver.com> (raw)
In-Reply-To: <AANLkTi=aC63h6rTNsqJ5tJ22FOuAR9+SLyp-vTW9KYDK@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 634 bytes --]
now endianness has been checked! see the patch
> On Sun, Oct 17, 2010 at 7:13 PM, lina.zhao <lina.zhao@windriver.com> wrote:
>
>> 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.
>>
>
> Not true. ARM can be biendian, just like MIPS...
> A better test needs to be derived for endianness than this.
> -Garrett
>
>
[-- Attachment #2: sync_file_rang01.patch --]
[-- Type: text/x-diff, Size: 3398 bytes --]
From cc07d890ae71837512731a0bf31006db8d717f8a Mon Sep 17 00:00:00 2001
From: Lina Zhao <lina.zhao@windriver.com>
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(-)
diff --git a/testcases/kernel/syscalls/sync_file_range/sync_file_range01.c b/testcases/kernel/syscalls/sync_file_range/sync_file_range01.c
index 53619b5..a66ce85 100644
--- a/testcases/kernel/syscalls/sync_file_range/sync_file_range01.c
+++ b/testcases/kernel/syscalls/sync_file_range/sync_file_range01.c
@@ -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 VALUE
int 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 supported
int 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();
--
1.6.3.1
[-- Attachment #3: Type: text/plain, Size: 369 bytes --]
------------------------------------------------------------------------------
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
[-- Attachment #4: Type: text/plain, Size: 155 bytes --]
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
next prev parent reply other threads:[~2010-10-19 5:11 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-18 2:13 [LTP] [patch] sync_file_range01 change for arm lina.zhao
2010-10-18 10:08 ` Garrett Cooper
2010-10-19 5:12 ` lina.zhao [this message]
2010-10-19 6:36 ` Garrett Cooper
2010-10-22 12:47 ` Cyril Hrubis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4CBD28A3.5000709@windriver.com \
--to=lina.zhao@windriver.com \
--cc=ltp-list@lists.sourceforge.net \
--cc=yanegomi@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox