Message ID | 20221225154213.84183-12-tsahu@linux.ibm.com |
---|---|
State | Superseded |
Headers | show |
Series | Hugetlb:Migrating the libhugetlbfs tests | expand |
On Sun, Dec 25, 2022 at 11:43 PM Tarun Sahu <tsahu@linux.ibm.com> wrote: > Migrating the libhugetlbfs/testcases/shared.c test > > Test Description: This test is basic shared mapping test. Two shared > mappings are created with same offset on a file. It checks if writing > to one mapping can be seen to other mapping or not? > > Signed-off-by: Tarun Sahu <tsahu@linux.ibm.com> > Reviewed-by: Li Wang <liwang@redhat.com> > --- > runtest/hugetlb | 1 + > testcases/kernel/mem/.gitignore | 1 + > .../kernel/mem/hugetlb/hugemmap/hugemmap31.c | 84 +++++++++++++++++++ > 3 files changed, 86 insertions(+) > create mode 100644 testcases/kernel/mem/hugetlb/hugemmap/hugemmap31.c > > diff --git a/runtest/hugetlb b/runtest/hugetlb > index 60cca4eb7..33fd384b4 100644 > --- a/runtest/hugetlb > +++ b/runtest/hugetlb > @@ -31,6 +31,7 @@ hugemmap27 hugemmap27 > hugemmap28 hugemmap28 > hugemmap29 hugemmap29 > hugemmap30 hugemmap30 > +hugemmap31 hugemmap31 > hugemmap05_1 hugemmap05 -m > hugemmap05_2 hugemmap05 -s > hugemmap05_3 hugemmap05 -s -m > diff --git a/testcases/kernel/mem/.gitignore > b/testcases/kernel/mem/.gitignore > index bb9720452..8375389cd 100644 > --- a/testcases/kernel/mem/.gitignore > +++ b/testcases/kernel/mem/.gitignore > @@ -30,6 +30,7 @@ > /hugetlb/hugemmap/hugemmap28 > /hugetlb/hugemmap/hugemmap29 > /hugetlb/hugemmap/hugemmap30 > +/hugetlb/hugemmap/hugemmap31 > /hugetlb/hugeshmat/hugeshmat01 > /hugetlb/hugeshmat/hugeshmat02 > /hugetlb/hugeshmat/hugeshmat03 > diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap31.c > b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap31.c > new file mode 100644 > index 000000000..a09905023 > --- /dev/null > +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap31.c > @@ -0,0 +1,84 @@ > +// SPDX-License-Identifier: LGPL-2.1-or-later > +/* > + * Copyright (C) 2005-2006 IBM Corporation. > + * Author: David Gibson & Adam Litke > + */ > + > +/*\ > + * [Description] > + * > + * This test is basic shared mapping test. Two shared mappings are created > + * with same offset on a file. It checks if writing to one mapping can be > + * seen to other mapping or not? > + */ > + > +#define _GNU_SOURCE > +#include <stdio.h> > +#include <sys/mount.h> > +#include <limits.h> > +#include <sys/param.h> > +#include <setjmp.h> > +#include <sys/types.h> > + > +#include "hugetlb.h" > + > +#define RANDOM_CONSTANT 0x1234ABCD > +#define MNTPOINT "hugetlbfs/" > + > +static long hpage_size; > +static int fd = -1; > + > +static void run_test(void) > +{ > + void *p, *q; > + unsigned long *pl, *ql; > + unsigned long i; > + > + fd = tst_creat_unlinked(MNTPOINT, 0); > + p = SAFE_MMAP(NULL, hpage_size, PROT_READ|PROT_WRITE, MAP_SHARED, > + fd, 0); > + > + q = SAFE_MMAP(NULL, hpage_size, PROT_READ|PROT_WRITE, MAP_SHARED, > + fd, 0); > + > + pl = p; > + for (i = 0; i < (hpage_size / sizeof(*pl)); i++) > + pl[i] = RANDOM_CONSTANT ^ i; > + > + ql = q; > + for (i = 0; i < (hpage_size / sizeof(*ql)); i++) { > + if (ql[i] != (RANDOM_CONSTANT ^ i)) { > + tst_res(TFAIL, "Mismatch at offset %lu, Got: %lu, > Expected: %lu", > + i, ql[i], RANDOM_CONSTANT ^ i); > + goto cleanup; > + } > + } > + > + tst_res(TPASS, "Successfully tested data between two shared > mappings"); > +cleanup: > + SAFE_MUNMAP(p, hpage_size); > + SAFE_MUNMAP(q, hpage_size); > + SAFE_CLOSE(fd); > +} > + > +static void setup(void) > +{ > + hpage_size = SAFE_READ_MEMINFO(MEMINFO_HPAGE_SIZE)*1024; > +} > + > +static void cleanup(void) > +{ > + if (fd >= 0) > + SAFE_CLOSE(fd); > +} > + > +static struct tst_test test = { > + .needs_root = 1, > + .mntpoint = MNTPOINT, > + .needs_hugetlbfs = 1, > + .needs_tmpdir = 1, > + .setup = setup, > + .cleanup = cleanup, > + .test_all = run_test, > + .hugepages = {2, TST_NEEDS}, > +}; > -- > 2.31.1 > >
diff --git a/runtest/hugetlb b/runtest/hugetlb index 60cca4eb7..33fd384b4 100644 --- a/runtest/hugetlb +++ b/runtest/hugetlb @@ -31,6 +31,7 @@ hugemmap27 hugemmap27 hugemmap28 hugemmap28 hugemmap29 hugemmap29 hugemmap30 hugemmap30 +hugemmap31 hugemmap31 hugemmap05_1 hugemmap05 -m hugemmap05_2 hugemmap05 -s hugemmap05_3 hugemmap05 -s -m diff --git a/testcases/kernel/mem/.gitignore b/testcases/kernel/mem/.gitignore index bb9720452..8375389cd 100644 --- a/testcases/kernel/mem/.gitignore +++ b/testcases/kernel/mem/.gitignore @@ -30,6 +30,7 @@ /hugetlb/hugemmap/hugemmap28 /hugetlb/hugemmap/hugemmap29 /hugetlb/hugemmap/hugemmap30 +/hugetlb/hugemmap/hugemmap31 /hugetlb/hugeshmat/hugeshmat01 /hugetlb/hugeshmat/hugeshmat02 /hugetlb/hugeshmat/hugeshmat03 diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap31.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap31.c new file mode 100644 index 000000000..a09905023 --- /dev/null +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap31.c @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/* + * Copyright (C) 2005-2006 IBM Corporation. + * Author: David Gibson & Adam Litke + */ + +/*\ + * [Description] + * + * This test is basic shared mapping test. Two shared mappings are created + * with same offset on a file. It checks if writing to one mapping can be + * seen to other mapping or not? + */ + +#define _GNU_SOURCE +#include <stdio.h> +#include <sys/mount.h> +#include <limits.h> +#include <sys/param.h> +#include <setjmp.h> +#include <sys/types.h> + +#include "hugetlb.h" + +#define RANDOM_CONSTANT 0x1234ABCD +#define MNTPOINT "hugetlbfs/" + +static long hpage_size; +static int fd = -1; + +static void run_test(void) +{ + void *p, *q; + unsigned long *pl, *ql; + unsigned long i; + + fd = tst_creat_unlinked(MNTPOINT, 0); + p = SAFE_MMAP(NULL, hpage_size, PROT_READ|PROT_WRITE, MAP_SHARED, + fd, 0); + + q = SAFE_MMAP(NULL, hpage_size, PROT_READ|PROT_WRITE, MAP_SHARED, + fd, 0); + + pl = p; + for (i = 0; i < (hpage_size / sizeof(*pl)); i++) + pl[i] = RANDOM_CONSTANT ^ i; + + ql = q; + for (i = 0; i < (hpage_size / sizeof(*ql)); i++) { + if (ql[i] != (RANDOM_CONSTANT ^ i)) { + tst_res(TFAIL, "Mismatch at offset %lu, Got: %lu, Expected: %lu", + i, ql[i], RANDOM_CONSTANT ^ i); + goto cleanup; + } + } + + tst_res(TPASS, "Successfully tested data between two shared mappings"); +cleanup: + SAFE_MUNMAP(p, hpage_size); + SAFE_MUNMAP(q, hpage_size); + SAFE_CLOSE(fd); +} + +static void setup(void) +{ + hpage_size = SAFE_READ_MEMINFO(MEMINFO_HPAGE_SIZE)*1024; +} + +static void cleanup(void) +{ + if (fd >= 0) + SAFE_CLOSE(fd); +} + +static struct tst_test test = { + .needs_root = 1, + .mntpoint = MNTPOINT, + .needs_hugetlbfs = 1, + .needs_tmpdir = 1, + .setup = setup, + .cleanup = cleanup, + .test_all = run_test, + .hugepages = {2, TST_NEEDS}, +};
Migrating the libhugetlbfs/testcases/shared.c test Test Description: This test is basic shared mapping test. Two shared mappings are created with same offset on a file. It checks if writing to one mapping can be seen to other mapping or not? Signed-off-by: Tarun Sahu <tsahu@linux.ibm.com> --- runtest/hugetlb | 1 + testcases/kernel/mem/.gitignore | 1 + .../kernel/mem/hugetlb/hugemmap/hugemmap31.c | 84 +++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 testcases/kernel/mem/hugetlb/hugemmap/hugemmap31.c