Auto mount the temporary directory for testing: 1. auto mount can reduce bugs 2. add a option to change the default hugepages to be allocated
Signed-off-by: Wanlong Gao <[email protected]> --- runtest/hugetlb | 2 +- testcases/kernel/mem/hugetlb/hugemmap/Makefile | 11 +++++ testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c | 47 ++++++++++++-------- 3 files changed, 40 insertions(+), 20 deletions(-) diff --git a/runtest/hugetlb b/runtest/hugetlb index a316043..2cbd410 100644 --- a/runtest/hugetlb +++ b/runtest/hugetlb @@ -1,4 +1,4 @@ -hugemmap01 hugemmap01 -H/tmp +hugemmap01 hugemmap01 hugemmap02 hugemmap02 -H/tmp -c10 hugemmap03 hugemmap03 -H/tmp -I2 -c10 hugemmap04 hugemmap04 -H/tmp diff --git a/testcases/kernel/mem/hugetlb/hugemmap/Makefile b/testcases/kernel/mem/hugetlb/hugemmap/Makefile index a1ba46e..ce9c571 100644 --- a/testcases/kernel/mem/hugetlb/hugemmap/Makefile +++ b/testcases/kernel/mem/hugetlb/hugemmap/Makefile @@ -24,4 +24,15 @@ top_srcdir ?= ../../../../.. include $(top_srcdir)/include/mk/testcases.mk include $(abs_srcdir)/../Makefile.inc + +LIBMEMDIR := ../../lib +LIBMEM := $(LIBMEMDIR)/libmem.a +$(LIBMEM): + $(MAKE) -C "$^" -f "$(abs_srcdir)/$^/Makefile" all + +CPPFLAGS += -I$(abs_srcdir)/$(LIBMEMDIR) +LDFLAGS += -L$(abs_builddir)/$(LIBMEMDIR) +LDLIBS += -lmem +MAKE_DEPS += $(LIBMEM) + include $(top_srcdir)/include/mk/generic_leaf_target.mk diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c index 35da0a4..1eeebf4 100644 --- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c @@ -57,24 +57,26 @@ #include <sys/stat.h> #include <sys/mman.h> #include <sys/types.h> +#include <sys/mount.h> #include "test.h" #include "usctest.h" #include "system_specific_hugepages_info.h" +#include "../../include/mem.h" -static char *TEMPFILE = "mmapfile"; +static char TEMPFILE[MAXPATHLEN]; char *TCID = "hugemmap01"; int TST_TOTAL = 1; static long *addr; static int fildes; static char *Hopt; +static char *nr_opt; static int beforetest; static int aftertest; static int hugepagesmapped; +static long hugepages = 1024; -static void setup(void); -static void cleanup(void); static void help(void); int main(int ac, char **av) @@ -83,9 +85,11 @@ int main(int ac, char **av) char *msg; int Hflag = 0; int page_sz = 0; + int sflag = 0; option_t options[] = { - { "H:", &Hflag, &Hopt }, + { "H:", &Hflag, &Hopt }, + { "s:", &sflag, &nr_opt }, { NULL, NULL, NULL } }; @@ -94,9 +98,13 @@ int main(int ac, char **av) tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s," "use -help", msg); - if (!Hflag) - tst_brkm(TBROK, NULL, "-H option is REQUIRED for this test, " - "use -h for options help"); + if (!Hflag) { + tst_tmpdir(); + Hopt = get_tst_tmpdir(); + } + + if (sflag) + hugepages = strtol(nr_opt, NULL, 10); setup(); @@ -150,29 +158,30 @@ int main(int ac, char **av) tst_exit(); } -static void setup(void) +void setup(void) { - char mypid[40]; - - sprintf(mypid, "/%d", getpid()); - TEMPFILE = strcat(mypid, TEMPFILE); - TEMPFILE = strcat(Hopt, TEMPFILE); - - tst_sig(FORK, DEF_HANDLER, cleanup); - - TEST_PAUSE; - + tst_require_root(NULL); + if (mount("none", Hopt, "hugetlbfs", 0, NULL) < 0) + tst_brkm(TBROK|TERRNO, NULL, + "mount failed on %s", Hopt); + + set_sys_tune("nr_hugepages", hugepages, 1); + snprintf(TEMPFILE, sizeof(TEMPFILE), "%s/mmapfile%d", + Hopt, getpid()); } -static void cleanup(void) +void cleanup(void) { TEST_CLEANUP; unlink(TEMPFILE); + umount(Hopt); + tst_rmdir(); } static void help(void) { printf(" -H /.. Location of hugetlbfs, i.e. -H /var/hugetlbfs\n"); + printf(" -s num Set the number of the been allocated hugepages\n"); } -- 1.7.9 ------------------------------------------------------------------------------ Keep Your Developer Skills Current with LearnDevNow! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-d2d _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
