From: Simon Xu <xu....@or...> - 2012-08-03 09:22:12
|
On 2012/8/3 14:38, Jan Stancek wrote: > ----- Original Message ----- >> From: "Wanlong Gao" <gao...@cn...> >> To: "Simon Xu" <xu....@or...> >> Cc: ltp...@li... >> Sent: Friday, 3 August, 2012 5:46:31 AM >> Subject: Re: [LTP] [PATCH 1/1] madvise03: let the system select an address for shmat() >> >> On 08/03/2012 12:53 AM, Simon Xu wrote: >>> In certain occasions, 0x22000000 is invalid for shmat() and >>> madvise03 fails: >>> >>> madvise03 1 TBROK : shmat error >>> madvise03 2 TBROK : Remaining cases broken >>> >>> Use `NULL' for shmat() to let the system attach the shared memory >>> segment >>> at the first available address. >>> >>> Signed-off-by: Simon Xu <xu....@or...> >>> --- >>> testcases/kernel/syscalls/madvise/madvise03.c | 6 +++--- >>> 1 file changed, 3 insertions(+), 3 deletions(-) >>> >>> diff --git a/testcases/kernel/syscalls/madvise/madvise03.c >>> b/testcases/kernel/syscalls/madvise/madvise03.c >>> index 2e696e8..fd0bd97 100644 >>> --- a/testcases/kernel/syscalls/madvise/madvise03.c >>> +++ b/testcases/kernel/syscalls/madvise/madvise03.c >>> @@ -154,13 +154,13 @@ int main(int argc, char *argv[]) >>> if (shmid1 == -1) >>> tst_brkm(TBROK, cleanup, "shmget failed"); >>> >>> - /* Attach shared memory segment to 0x22000000 address */ >>> - addr1 = shmat(shmid1, (void *)0x22000000, 0); >>> + /* Attach shared memory segment to an address selected by the >>> system */ >>> + addr1 = shmat(shmid1, NULL, 0); >>> if (addr1 == (void *) -1) >>> tst_brkm(TBROK, cleanup, "shmat error"); >>> >>> /* (1) Test case for MADV_REMOVE */ >>> - TEST(madvise((void *)0x22000000, 4096, MADV_REMOVE)); >>> + TEST(madvise((void *)addr1, 4096, MADV_REMOVE)); >> (void *) is not needed now ? > That shouldn't be needed for NULL. addr1 is the return value of shmat(), whose return value type is void *. Yes, `(void *)' is no longer needed. Thanks for pointing this out. Thanks Simon >> otherwise, looks OK to me. > +1, this looks better than hardcoding some random address. > >> Thanks, >> Wanlong Gao >> >>> check_and_print("MADV_REMOVE"); >>> >>> /* (2) Test case for MADV_DONTFORK */ |