Hi Cyril Please ignore this patch. I am so sorry for my fault.:-[ I will resend it. thanks wei On 12/27/2011 02:45 PM, Wei.Yang@windriver.com wrote: > From: Wei Yang > > > Signed-off-by: Wei Yang > --- > testcases/kernel/syscalls/ipc/shmat/shmat01.c | 27 +++++++++++++++++++++++- > 1 files changed, 25 insertions(+), 2 deletions(-) > > diff --git a/testcases/kernel/syscalls/ipc/shmat/shmat01.c b/testcases/kernel/syscalls/ipc/shmat/shmat01.c > index 7c68459..344ad3f 100644 > --- a/testcases/kernel/syscalls/ipc/shmat/shmat01.c > +++ b/testcases/kernel/syscalls/ipc/shmat/shmat01.c > @@ -65,6 +65,9 @@ void check_functionality(int); > #define CASE1 20 /* memory location. */ > > int shm_id_1 = -1; > +#if defined(__mips__) || defined(__mips64) > +int shm_id_2 = -1; > +#endif > > void *base_addr; /* By probing this address first, we can make > * non-aligned addresses from it for different > @@ -262,14 +265,34 @@ void setup(void) > tst_brkm(TBROK, cleanup, "Failed to create shared memory " > "resource 1 in setup()"); > } > - > /* Probe an available linear address for attachment */ > +#if defined(__mips__) || defined(__mips64) > + /* > + * For mips architecture, SHMLBA is not equal to PAGE_SIZE > + * base_addr is not available address for process after > + * base_addr is aligned to next SHMLBA address > + */ > + if ((shm_id_2 = shmget(shmkey++, SHMLBA, SHM_RW | IPC_CREAT | IPC_EXCL)) == -1) { > + tst_brkm(TBROK, cleanup, "Failed to create shared memory "); > + } > + if ((base_addr = shmat(shm_id_2, NULL, 0)) == (void *) -1) { > + rm_shm(shm_id_2); > + tst_brkm(TBROK, cleanup, "Couldn't attach shared memory"); > + } > + if (shmdt((const void *)base_addr) == -1) { > + rm_shm(shm_id_2); > + tst_brkm(TBROK, cleanup, "Couldn't detach shared memory"); > + } > + rm_shm(shm_id_2); > +#else > if ((base_addr = shmat(shm_id_1, NULL, 0)) == (void *)-1) { > tst_brkm(TBROK, cleanup, "Couldn't attach shared memory"); > } > if (shmdt((const void *)base_addr) == -1) { > tst_brkm(TBROK, cleanup, "Couldn't detach shared memory"); > } > +#endif > + > > /* some architectures (e.g. parisc) are strange, so better always align to > * next SHMLBA address. */ > @@ -299,4 +322,4 @@ void cleanup(void) > */ > TEST_CLEANUP; > > -} > \ No newline at end of file > +}