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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.