From: Ackerley Tng <[email protected]> Port verification logic from libhugetlbfs' tests/readback.c.
Iterate using an unsigned int pointer instead of a char pointer, which enables testing against a greater range of stored values beyond [0, 255]. Signed-off-by: Ackerley Tng <[email protected]> --- tools/testing/selftests/mm/hugepage-mmap.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/mm/hugepage-mmap.c b/tools/testing/selftests/mm/hugepage-mmap.c index dd9fccb209b10..a7d4a3eba3dd7 100644 --- a/tools/testing/selftests/mm/hugepage-mmap.c +++ b/tools/testing/selftests/mm/hugepage-mmap.c @@ -45,7 +45,7 @@ enum fd_kind { FIXTURE(hugepage_mmap) { int fd; - char *addr; + unsigned int *addr; char mount_dir[PATH_MAX]; }; @@ -122,19 +122,21 @@ FIXTURE_TEARDOWN(hugepage_mmap) } } +#define RANDOM_CONSTANT 0x1234ABCD + TEST_F(hugepage_mmap, read_write) { unsigned long i; - TH_LOG("First hex is %x", *((unsigned int *)self->addr)); + TH_LOG("First hex is %x", *self->addr); - for (i = 0; i < LENGTH; i++) - self->addr[i] = (char)i; + for (i = 0; i < LENGTH / sizeof(*self->addr); i++) + self->addr[i] = RANDOM_CONSTANT ^ i; - TH_LOG("First hex is %x", *((unsigned int *)self->addr)); + TH_LOG("First hex is %x", *self->addr); - for (i = 0; i < LENGTH; i++) { - ASSERT_EQ(self->addr[i], (char)i) { + for (i = 0; i < LENGTH / sizeof(*self->addr); i++) { + ASSERT_EQ(self->addr[i], RANDOM_CONSTANT ^ i) { TH_LOG("Error: Mismatch at %lu\n", i); }; } -- 2.54.0.563.g4f69b47b94-goog

