Signed-off-by: Tang Chen <[email protected]>
---
 testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c |   52 ++++++--------------
 1 files changed, 16 insertions(+), 36 deletions(-)

diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c 
b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
index 4cc6ed4..9774e87 100644
--- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
+++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
@@ -73,10 +73,11 @@
 #include "test.h"
 #include "usctest.h"
 #include "system_specific_hugepages_info.h"
+#include "libmnt.h"
 
 #define BUFFER_SIZE  256
 
-char* TEMPFILE="mmapfile";
+char TEMPFILE[MAXPATHLEN];
 
 char *TCID="hugemmap04";       /* Test program identifier.    */
 int TST_TOTAL=1;               /* Total number of test cases. */
@@ -87,41 +88,17 @@ int freepages=0;            /* Amount of free huge pages to 
use for testing */
 int beforetest=0;              /* Amount of free huge pages before testing */
 int aftertest=0;               /* Amount of free huge pages after testing */
 int hugepagesmapped=0;         /* Amount of huge pages mapped after testing */
-char *Hopt;                     /* location of hugetlbfs */
+char *mount_point = NULL;
 
-void setup();                  /* Main setup function of test */
-void cleanup();                        /* cleanup function for the test */
-
-void help()
-{
-       printf("  -H /..  Location of hugetlbfs, i.e. -H /var/hugetlbfs \n");
-}
+void setup(void);                      /* Main setup function of test */
+void cleanup(void);                    /* cleanup function for the test */
 
 int
 main(int ac, char **av)
 {
        int lc;                 /* loop counter */
-       char *msg;              /* message returned from parse_opts */
-        int Hflag=0;              /* binary flag: opt or not */
        int huge_pagesize=0;
 
-               option_t options[] = {
-               { "H:",   &Hflag, &Hopt },    /* Required for location of 
hugetlbfs */
-               { NULL, NULL, NULL }          /* NULL required to end array */
-               };
-
-       /* Parse standard options given to run the test. */
-       msg = parse_opts(ac, av, options, &help);
-       if (msg != (char *) NULL) {
-               tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s, use -help", 
msg);
-               tst_exit();
-       }
-
-       if (Hflag == 0) {
-               tst_brkm(TBROK, NULL, "-H option is REQUIRED for this test, use 
-h for options help");
-               tst_exit();
-       }
-
        /* Check number of hugepages */
        if (get_no_of_hugepages() <= 0 || hugepages_size() <= 0)
                tst_brkm(TCONF, cleanup, "Not enough available Hugepages");
@@ -151,7 +128,7 @@ main(int ac, char **av)
                tst_resm(TINFO,"Total amount of free huge pages is 
%d",freepages);
                tst_resm(TINFO,"Max number allowed for 1 mmap file in 32-bits 
is 128");
                if (freepages > 128)
-                 freepages=128;
+                       freepages=128;
 #endif
                /*
                 * Call mmap
@@ -206,16 +183,18 @@ main(int ac, char **av)
 void
 setup()
 {
-       char mypid[40];
-
-       sprintf(mypid,"/%d",getpid());
-       TEMPFILE=strcat(mypid,TEMPFILE);
-       TEMPFILE=strcat(Hopt,TEMPFILE);
-
+       tst_require_root(NULL);
        tst_sig(FORK, DEF_HANDLER, cleanup);
 
        TEST_PAUSE;
 
+       tst_tmpdir();
+       mount_point = get_tst_tmpdir();
+
+       mount_hugetlbfs(mount_point);
+       hugepage_alloc(1024);
+
+       snprintf(TEMPFILE, sizeof(TEMPFILE), "%s/mmapfile%d", mount_point, 
getpid());
 }
 
 /*
@@ -232,5 +211,6 @@ cleanup()
        TEST_CLEANUP;
 
        unlink(TEMPFILE);
-
+       umount_hugetlbfs(mount_point);
+       tst_rmdir();
 }
-- 
1.7.1

-- 
Best Regards,
Tang chen
>From 8f91983c4f1edd5af589de3c8936a8e4324a7eab Mon Sep 17 00:00:00 2001
From: Tang Chen <[email protected]>
Date: Tue, 16 Aug 2011 14:20:59 +0800
Subject: [PATCH 6/6] hugemmap04.c : Automatically mount hugetlbfs on /huge.

Firstly, mounting hugetlbfs on /tmp is not a good idea, because lots of 
programs could use /tmp for other purpose. This could cause other tests fail.
Secondly, mounting hugetlbfs could be done automatically.
This patch creates a temp directory with name including the current PID, 
automatically mounts hugetlbfs on the directory before test starts, and umounts 
it when the test is over.

Signed-off-by: Tang Chen <[email protected]>
---
 testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c |   52 ++++++--------------
 1 files changed, 16 insertions(+), 36 deletions(-)

diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c 
b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
index 4cc6ed4..9774e87 100644
--- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
+++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
@@ -73,10 +73,11 @@
 #include "test.h"
 #include "usctest.h"
 #include "system_specific_hugepages_info.h"
+#include "libmnt.h"
 
 #define BUFFER_SIZE  256
 
-char* TEMPFILE="mmapfile";
+char TEMPFILE[MAXPATHLEN];
 
 char *TCID="hugemmap04";       /* Test program identifier.    */
 int TST_TOTAL=1;               /* Total number of test cases. */
@@ -87,41 +88,17 @@ int freepages=0;            /* Amount of free huge pages to 
use for testing */
 int beforetest=0;              /* Amount of free huge pages before testing */
 int aftertest=0;               /* Amount of free huge pages after testing */
 int hugepagesmapped=0;         /* Amount of huge pages mapped after testing */
-char *Hopt;                     /* location of hugetlbfs */
+char *mount_point = NULL;
 
-void setup();                  /* Main setup function of test */
-void cleanup();                        /* cleanup function for the test */
-
-void help()
-{
-       printf("  -H /..  Location of hugetlbfs, i.e. -H /var/hugetlbfs \n");
-}
+void setup(void);                      /* Main setup function of test */
+void cleanup(void);                    /* cleanup function for the test */
 
 int
 main(int ac, char **av)
 {
        int lc;                 /* loop counter */
-       char *msg;              /* message returned from parse_opts */
-        int Hflag=0;              /* binary flag: opt or not */
        int huge_pagesize=0;
 
-               option_t options[] = {
-               { "H:",   &Hflag, &Hopt },    /* Required for location of 
hugetlbfs */
-               { NULL, NULL, NULL }          /* NULL required to end array */
-               };
-
-       /* Parse standard options given to run the test. */
-       msg = parse_opts(ac, av, options, &help);
-       if (msg != (char *) NULL) {
-               tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s, use -help", 
msg);
-               tst_exit();
-       }
-
-       if (Hflag == 0) {
-               tst_brkm(TBROK, NULL, "-H option is REQUIRED for this test, use 
-h for options help");
-               tst_exit();
-       }
-
        /* Check number of hugepages */
        if (get_no_of_hugepages() <= 0 || hugepages_size() <= 0)
                tst_brkm(TCONF, cleanup, "Not enough available Hugepages");
@@ -151,7 +128,7 @@ main(int ac, char **av)
                tst_resm(TINFO,"Total amount of free huge pages is 
%d",freepages);
                tst_resm(TINFO,"Max number allowed for 1 mmap file in 32-bits 
is 128");
                if (freepages > 128)
-                 freepages=128;
+                       freepages=128;
 #endif
                /*
                 * Call mmap
@@ -206,16 +183,18 @@ main(int ac, char **av)
 void
 setup()
 {
-       char mypid[40];
-
-       sprintf(mypid,"/%d",getpid());
-       TEMPFILE=strcat(mypid,TEMPFILE);
-       TEMPFILE=strcat(Hopt,TEMPFILE);
-
+       tst_require_root(NULL);
        tst_sig(FORK, DEF_HANDLER, cleanup);
 
        TEST_PAUSE;
 
+       tst_tmpdir();
+       mount_point = get_tst_tmpdir();
+
+       mount_hugetlbfs(mount_point);
+       hugepage_alloc(1024);
+
+       snprintf(TEMPFILE, sizeof(TEMPFILE), "%s/mmapfile%d", mount_point, 
getpid());
 }
 
 /*
@@ -232,5 +211,6 @@ cleanup()
        TEST_CLEANUP;
 
        unlink(TEMPFILE);
-
+       umount_hugetlbfs(mount_point);
+       tst_rmdir();
 }
-- 
1.7.1

------------------------------------------------------------------------------
uberSVN's rich system and user administration capabilities and model 
configuration take the hassle out of deploying and managing Subversion and 
the tools developers use with it. Learn more about uberSVN and get a free 
download at:  http://p.sf.net/sfu/wandisco-dev2dev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to