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/hugemmap02.c |   41 ++++++++++++--------
 2 files changed, 26 insertions(+), 17 deletions(-)

diff --git a/runtest/hugetlb b/runtest/hugetlb
index 2cbd410..806bee8 100644
--- a/runtest/hugetlb
+++ b/runtest/hugetlb
@@ -1,5 +1,5 @@
 hugemmap01 hugemmap01
-hugemmap02 hugemmap02 -H/tmp -c10
+hugemmap02 hugemmap02 -c10
 hugemmap03 hugemmap03 -H/tmp -I2 -c10
 hugemmap04 hugemmap04 -H/tmp
 hugemmap05 hugemmap05
diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c 
b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c
index ed1a9a4..64fc212 100644
--- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c
+++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c
@@ -50,10 +50,12 @@
 #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"
 
 #define LOW_ADDR       (void *)(0x80000000)
 #define LOW_ADDR2      (void *)(0x90000000)
@@ -69,9 +71,9 @@ static int i;
 static int fildes;
 static int nfildes;
 static char *Hopt;
+static char *nr_opt;
+static long hugepages = 1024;
 
-static void setup(void);
-static void cleanup(void);
 static void help(void);
 
 int main(int ac, char **av)
@@ -80,20 +82,25 @@ int main(int ac, char **av)
        char *msg;
        int Hflag = 0;
        int page_sz, map_sz;
+       int sflag = 0;
 
        option_t options[] = {
-               { "H:",   &Hflag, &Hopt },
+               { "H:", &Hflag, &Hopt },
+               { "s:", &sflag, &nr_opt },
                { NULL, NULL, NULL }
        };
 
        msg = parse_opts(ac, av, options, &help);
-       if (msg != NULL)
+       if (msg)
                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);
 
        page_sz = getpagesize();
        map_sz = 2 * 1024 * hugepages_size();
@@ -176,27 +183,29 @@ int main(int ac, char **av)
        tst_exit();
 }
 
-static void setup(void)
+void setup(void)
 {
-       tst_tmpdir();
-
-       snprintf(TEMPFILE, sizeof(TEMPFILE), "%s/mmapfile%d", Hopt, getpid());
-
-       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

Reply via email to