Message ID | 20221012021356.189479-1-zhaogongyi@huawei.com |
---|---|
State | Changes Requested |
Headers | show |
Series | [v3] syscalls/madvise04: new test for madvise(MADV_DONTNEED) | expand |
Hi! > Test cases for madvise(2) system call, verify that MADV_DONTNEED > can be applied to Huge TLB pages after kernel version 5.18. > > Signed-off-by: Zhao Gongyi <zhaogongyi@huawei.com> > --- > runtest/syscalls | 1 + > testcases/kernel/syscalls/madvise/.gitignore | 1 + > testcases/kernel/syscalls/madvise/madvise04.c | 49 +++++++++++++++++++ > 3 files changed, 51 insertions(+) > create mode 100644 testcases/kernel/syscalls/madvise/madvise04.c > > diff --git a/runtest/syscalls b/runtest/syscalls > index c81764df4..eb1910cec 100644 > --- a/runtest/syscalls > +++ b/runtest/syscalls > @@ -941,6 +941,7 @@ mincore04 mincore04 > madvise01 madvise01 > madvise02 madvise02 > madvise03 madvise03 > +madvise04 madvise04 > madvise05 madvise05 > madvise06 madvise06 > madvise07 madvise07 > diff --git a/testcases/kernel/syscalls/madvise/.gitignore b/testcases/kernel/syscalls/madvise/.gitignore > index f4bfdfefe..db8ce47c1 100644 > --- a/testcases/kernel/syscalls/madvise/.gitignore > +++ b/testcases/kernel/syscalls/madvise/.gitignore > @@ -1,6 +1,7 @@ > /madvise01 > /madvise02 > /madvise03 > +/madvise04 > /madvise05 > /madvise06 > /madvise07 > diff --git a/testcases/kernel/syscalls/madvise/madvise04.c b/testcases/kernel/syscalls/madvise/madvise04.c > new file mode 100644 > index 000000000..ba15de092 > --- /dev/null > +++ b/testcases/kernel/syscalls/madvise/madvise04.c > @@ -0,0 +1,49 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later > +/* > + * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved. > + * Author: Zhao Gongyi <zhaogongyi@huawei.com> > + */ > + > +/*\ > + * [Description] > + * > + * Test cases for madvise(2) system call, advise value as "MADV_MADV_DONTNEED": > + * MADV_DONTNEED can be applied to Huge TLB pages after kernel version 5.18. > + */ > + > +#include "tst_test.h" > + > +#define MAP_SIZE (8 * 1024) > + > +static char *addr; > +static int mapsz; > + > +static void run(void) > +{ > + TST_EXP_PASS(madvise(addr, mapsz, MADV_DONTNEED)); > Should we check that the pages have been zero filled like in the previous case? +} > + > +static void setup(void) > +{ > + mapsz = tst_get_hugepage_size(); > + addr = SAFE_MMAP(NULL, mapsz, > + PROT_READ | PROT_WRITE, > + MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB, > + -1, 0); > +} > + > +static void cleanup(void) > +{ > + if (addr) > + SAFE_MUNMAP(addr, mapsz); > +} > + > +static struct tst_test test = { > + .test_all = run, > + .setup = setup, > + .cleanup = cleanup, > + .min_kver = "5.18", > + .needs_root = 1, > + .hugepages = {1, TST_NEEDS}, > +};
diff --git a/runtest/syscalls b/runtest/syscalls index c81764df4..eb1910cec 100644 --- a/runtest/syscalls +++ b/runtest/syscalls @@ -941,6 +941,7 @@ mincore04 mincore04 madvise01 madvise01 madvise02 madvise02 madvise03 madvise03 +madvise04 madvise04 madvise05 madvise05 madvise06 madvise06 madvise07 madvise07 diff --git a/testcases/kernel/syscalls/madvise/.gitignore b/testcases/kernel/syscalls/madvise/.gitignore index f4bfdfefe..db8ce47c1 100644 --- a/testcases/kernel/syscalls/madvise/.gitignore +++ b/testcases/kernel/syscalls/madvise/.gitignore @@ -1,6 +1,7 @@ /madvise01 /madvise02 /madvise03 +/madvise04 /madvise05 /madvise06 /madvise07 diff --git a/testcases/kernel/syscalls/madvise/madvise04.c b/testcases/kernel/syscalls/madvise/madvise04.c new file mode 100644 index 000000000..ba15de092 --- /dev/null +++ b/testcases/kernel/syscalls/madvise/madvise04.c @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved. + * Author: Zhao Gongyi <zhaogongyi@huawei.com> + */ + +/*\ + * [Description] + * + * Test cases for madvise(2) system call, advise value as "MADV_MADV_DONTNEED": + * MADV_DONTNEED can be applied to Huge TLB pages after kernel version 5.18. + */ + +#include "tst_test.h" + +#define MAP_SIZE (8 * 1024) + +static char *addr; +static int mapsz; + +static void run(void) +{ + TST_EXP_PASS(madvise(addr, mapsz, MADV_DONTNEED)); +} + +static void setup(void) +{ + mapsz = tst_get_hugepage_size(); + addr = SAFE_MMAP(NULL, mapsz, + PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB, + -1, 0); +} + +static void cleanup(void) +{ + if (addr) + SAFE_MUNMAP(addr, mapsz); +} + +static struct tst_test test = { + .test_all = run, + .setup = setup, + .cleanup = cleanup, + .min_kver = "5.18", + .needs_root = 1, + .hugepages = {1, TST_NEEDS}, +}; +
Test cases for madvise(2) system call, verify that MADV_DONTNEED can be applied to Huge TLB pages after kernel version 5.18. Signed-off-by: Zhao Gongyi <zhaogongyi@huawei.com> --- runtest/syscalls | 1 + testcases/kernel/syscalls/madvise/.gitignore | 1 + testcases/kernel/syscalls/madvise/madvise04.c | 49 +++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 testcases/kernel/syscalls/madvise/madvise04.c -- 2.17.1