Just see whether Roy Lee“s Patch solves your problem.
Regards--
Subrata
On Wed, May 14, 2008 at 8:46 PM, Shane Volpe <[EMAIL PROTECTED]> wrote:
> I'm getting the following failure on my Xscale (ARM) board
>
> shmt09 1 PASS : sbrk, sbrk, shmget, shmat
> shmt09 2 PASS : sbrk, shmat
> shmat: Invalid argument
> shmt09 3 FAIL : Error: shmat Failed, shmid = 1409024, errno = 29
>
> The following is the suspect code (around line 160):
>
> #ifdef __mips__
> vp = (void *)((char *)sbrk(0) + 256 * K_1);
> #elif defined(__powerpc__) || defined(__powerpc64__)
> vp = (void *)((char *)sbrk(0) + getpagesize());
> #else
> /* SHM_RND rounds vp on the nearest multiple of SHMLBA */
> vp = (void *)SHMALIGN((char *)sbrk(0) + 1);
> #endif
>
> c3 = (char *)shmat(shmid, vp, SHM_RND);
>
> It looks like vp is providing an invalid argument to shmat.
>
> I ran the test with vp set to the following and added printf's to
> return "vp" and sbrk(0) values:
>
> Debug Case 1:
> vp = (void *)SHMALIGN((char *)sbrk(0) + 1);
> The variable "vp" returns: vp = 0x1d000
> the function sbrk() returns: sbrk(0) 0x1c17f
>
> I then changed the vp variable to (added __arm__ to the __mips__
> section above) and the test passes:
> Debug Case 2:
> vp = (void *)((char *)sbrk(0) + 256 * K_1);
> The variable "vp" returns: vp = 0x5c17f
> the function sbrk() returns: brk(0) 0x1c17f
>
> I do not understand why Debug Case 2: (default code in ltp) fails.
> The shared mem current page is 0x1c17f and vp is 0x1d000 this seems
> correct or at least no different than Debug Case 2 were vp is a page
> or more higher in address than what sbrk(0) returns.
>
> Regards,
> Shane
>
> System:
> Xscale PXA270
> 64 MB Ram
> Kernel 2.6.23.16
> libc-2.5
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Ltp-list mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ltp-list
>
--
Regards & Thanks--
Subrata
commit 747122fbdabc23ee88c6cf4e0a28fa485ad6de27
Author: Roy Lee <[EMAIL PROTECTED]>
Date: Wed May 14 19:23:27 2008 +0800
This patch modifies testcases to attach their shm segment to addresses
chosen by ststem instead of arch-dependent ones.
diff --git a/testcases/kernel/mem/shmt/shmt02.c b/testcases/kernel/mem/shmt/shmt02.c
index 4cb6ab1..734acf0 100644
--- a/testcases/kernel/mem/shmt/shmt02.c
+++ b/testcases/kernel/mem/shmt/shmt02.c
@@ -77,12 +77,8 @@ int main()
/*----------------------------------------------------------------*/
- /* are we doing with ia64 or arm_arch_4t arch */
-#if defined (__ia64__) || defined (__ARM_ARCH_4T__) || defined(__hppa__)
cp = (char *)shmat(shmid, (void *)NULL, 0);
-#else
- cp = (char *)shmat(shmid, (void *)0x80000, 0);
-#endif
+
if (cp == (char *)-1) {
perror("shmat");
tst_resm(TFAIL, "shmat Failed: shmid = %d, errno = %d\n",
diff --git a/testcases/kernel/mem/shmt/shmt04.c b/testcases/kernel/mem/shmt/shmt04.c
index 21da31c..fb857e5 100644
--- a/testcases/kernel/mem/shmt/shmt04.c
+++ b/testcases/kernel/mem/shmt/shmt04.c
@@ -60,8 +60,6 @@ extern int Tst_count; /* Test Case counter for tst_* routines */
key_t key;
sigset_t sigset;
-#define ADDR1 (void *)0x40000000
-#define ADDR (void *)0x80000
#define SIZE 16*1024
int child();
@@ -99,13 +97,7 @@ int main()
*/
(void)kill(pid, SIGINT);
} else {
-#ifdef __ia64__
- cp = (char *)shmat(shmid, ADDR1, 0);
-#elif defined(__ARM_ARCH_4T__) || defined(__hppa__)
cp = (char *)shmat(shmid, NULL, 0);
-#else
- cp = (char *)shmat(shmid, ADDR, 0);
-#endif
if (cp == (char *)-1) {
perror("shmat");
@@ -172,13 +164,8 @@ int child()
"Error: shmget: errno=%d, shmid=%d, child_pid=%d\n",
errno, shmid, chld_pid);
} else {
-#ifdef __ia64__
- cp = (char *)shmat(shmid, ADDR1, 0);
-#elif defined(__ARM_ARCH_4T__) || defined(__hppa__)
cp = (char *)shmat(shmid, NULL, 0);
-#else
- cp = (char *)shmat(shmid, ADDR, 0);
-#endif
+
if (cp == (char *)-1) {
perror("shmat:child process");
tst_resm(TFAIL,
diff --git a/testcases/kernel/mem/shmt/shmt05.c b/testcases/kernel/mem/shmt/shmt05.c
index e1cd530..1c3b459 100644
--- a/testcases/kernel/mem/shmt/shmt05.c
+++ b/testcases/kernel/mem/shmt/shmt05.c
@@ -53,11 +53,6 @@ extern int Tst_count; /* Test Case counter for tst_* routines */
key_t key[2];
-#define ADDR (void *)0x80000
-#define ADDR1 (void *)0x80010
-#define ADDR_IA (void *)0x40000000
-#define ADDR1_IA (void *)0x40000010
-
#define SIZE 16*1024
int rm_shm(int);
@@ -80,13 +75,8 @@ int main()
"Error: shmget: shmid = %d, errno = %d\n",
shmid, errno);
} else {
-#ifdef __ia64__
- cp = (char *)shmat(shmid, ADDR_IA, 0);
-#elif defined(__ARM_ARCH_4T__) || defined(__hppa__)
cp = (char *)shmat(shmid, (void *)NULL, 0);
-#else
- cp = (char *)shmat(shmid, ADDR, 0);
-#endif
+
if (cp == (char *)-1) {
tst_resm(TFAIL, "shmat");
rm_shm(shmid);
@@ -103,24 +93,18 @@ int main()
"Error: shmget: shmid1 = %d, errno = %d\n",
shmid1, errno);
} else {
-#ifdef __ia64__
- cp1 = (char *)shmat(shmid1, ADDR1_IA, 0);
-#elif defined(__ARM_ARCH_4T__)
- cp1 = (char *)shmat(shmid1, (void *)NULL, 0);
-#elif defined(__hppa__)
cp1 = (char *)shmat(shmid1, cp + 4096, 0);
-#else
- cp1 = (char *)shmat(shmid1, ADDR1, 0);
-#endif
if (cp1 != (char *)-1) {
perror("shmat");
tst_resm(TFAIL,
"Error: shmat: shmid1 = %d, addr= %#x, errno = %d\n",
shmid1, cp1, errno);
}
+ else{
+ tst_resm(TPASS, "2nd shmget & shmat");
+ }
}
- tst_resm(TPASS, "2nd shmget & shmat");
/*------------------------------------------------------*/
diff --git a/testcases/kernel/mem/shmt/shmt06.c b/testcases/kernel/mem/shmt/shmt06.c
index f8fd24d..8fec106 100644
--- a/testcases/kernel/mem/shmt/shmt06.c
+++ b/testcases/kernel/mem/shmt/shmt06.c
@@ -47,14 +47,6 @@
#include <stdlib.h>
#include <unistd.h>
-#define ADDR (void *)0x80000
-#define ADDR1 (void *)0xA0000
-#define ADDR_MIPS (void *)0x80000
-#define ADDR1_MIPS (void *)0xC0000
-#define ADDR_HPPA (void *)0x10000000
-#define ADDR1_HPPA (void *)0x20000000
-#define ADDR_IA (void *)0x40000000
-#define ADDR1_IA (void *)0x50000000
#define SIZE 16*1024
/** LTP Port **/
@@ -104,17 +96,8 @@ int main()
*/
(void)kill(pid, SIGINT);
} else {
-#ifdef __ia64__
- cp = (char *)shmat(shmid, ADDR_IA, 0);
-#elif defined(__ARM_ARCH_4T__)
cp = (char *)shmat(shmid, (void *)NULL, 0);
-#elif defined(__mips__)
- cp = (char *)shmat(shmid, ADDR_MIPS, 0);
-#elif defined(__hppa__)
- cp = (char *)shmat(shmid, ADDR_HPPA, 0);
-#else
- cp = (char *)shmat(shmid, ADDR, 0);
-#endif
+
if (cp == (char *)-1) {
perror("shmat");
tst_resm(TFAIL,
@@ -179,17 +162,8 @@ int child()
"Error: shmget: errno=%d, shmid=%d, child_pid=%d\n",
errno, shmid, chld_pid);
} else {
-#ifdef __ia64__
- cp = (char *)shmat(shmid, ADDR1_IA, 0);
-#elif defined(__ARM_ARCH_4T__)
cp = (char *)shmat(shmid, (void *)NULL, 0);
-#elif defined(__mips__)
- cp = (char *)shmat(shmid, ADDR1_MIPS, 0);
-#elif defined(__hppa__)
- cp = (char *)shmat(shmid, ADDR1_HPPA, 0);
-#else
- cp = (char *)shmat(shmid, ADDR1, 0);
-#endif
+
if (cp == (char *)-1) {
perror("shmat:child process");
tst_resm(TFAIL,
diff --git a/testcases/kernel/mem/shmt/shmt07.c b/testcases/kernel/mem/shmt/shmt07.c
index 9eb76ba..3e7cf68 100644
--- a/testcases/kernel/mem/shmt/shmt07.c
+++ b/testcases/kernel/mem/shmt/shmt07.c
@@ -45,8 +45,6 @@
#include <stdlib.h>
#include <unistd.h>
-#define ADDR (void *)0x80000
-#define ADDR_IA (void *)0x40000000
#define SIZE 16*1024
/** LTP Port **/
@@ -79,13 +77,8 @@ int main()
shmid, errno);
tst_exit();
}
-#ifdef __ia64__
- cp = (char *)shmat(shmid, ADDR_IA, 0);
-#elif defined(__ARM_ARCH_4T__) || defined(__hppa__)
cp = (char *)shmat(shmid, (void *)NULL, 0);
-#else
- cp = (char *)shmat(shmid, ADDR, 0);
-#endif
+
if (cp == (char *)-1) {
perror("shmat");
tst_resm(TFAIL,
diff --git a/testcases/kernel/mem/shmt/shmt09.c b/testcases/kernel/mem/shmt/shmt09.c
index f8d219f..e12a4d8 100644
--- a/testcases/kernel/mem/shmt/shmt09.c
+++ b/testcases/kernel/mem/shmt/shmt09.c
@@ -65,7 +65,7 @@ extern int Tst_count; /* Test Case counter for tst_* routines */
#elif defined __sh__ || defined (__arm__)
#define INCREMENT 16384 /* 16kb */
#else
-#define INCREMENT getpagesize()
+#define INCREMENT SHMLBA
#endif
int rm_shm(int);
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list