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

Reply via email to