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: tangchen <tangc...@cn.fujitsu.com> Signed-off-by: Wanlong Gao <gaowanl...@cn.fujitsu.com> --- testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c | 50 +++++++------------- 1 files changed, 18 insertions(+), 32 deletions(-) diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c index 874f736..906f7e4 100644 --- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c @@ -73,51 +73,35 @@ #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="hugemmap01"; /* Test program identifier. */ int TST_TOTAL=1; /* Total number of test cases. */ long *addr; /* addr of memory mapped region */ int fildes; /* file descriptor for tempfile */ -char *Hopt; /* location of hugetlbfs */ 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 *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 page_sz=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) { + msg = parse_opts(ac, av, NULL, NULL); + if (msg != 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(); } setup(); @@ -189,18 +173,19 @@ main(int ac, char **av) * Write some known data into file and get the size of the file. */ void -setup() +setup(void) { - 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()); } /* @@ -209,7 +194,7 @@ setup() * Remove the temporary directory created. */ void -cleanup() +cleanup(void) { /* * print timing stats if that option was specified. @@ -217,5 +202,6 @@ cleanup() TEST_CLEANUP; unlink(TEMPFILE); - + umount_hugetlbfs(mount_point); + tst_rmdir(); } -- 1.7.1 ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-novd2d _______________________________________________ Ltp-list mailing list Ltp-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ltp-list