On 02/07/2012 03:34 PM, Caspar Zhang wrote:

> On 02/07/2012 10:20 AM, Wanlong Gao wrote:
>> 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;
> 
> Hmmm, I prefer to use something like #define DEFAULT_HUGE_NR 10 (maybe
> in include/mem.h), instead of a number here.


IMO, move too many things to mem.h sometime make things more harder.
If definited like this, how can I change this by arguments?

> 
>>  
>> -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);
> 
> I think we need some error check mechanism here.
> 
> (@Cyril: Looks like we need a strtol wrapper in LTP lib? we have several
> examples before, like:


Yes, please do this now.

> 
>     val = strtol(str, &endptr, 10);
>     if (((val == LONG_MAX || val == LONG_MIN) && errno == ERANGE) ||
>             (errno != 0 && val == 0))
>         tst_brkm(TBROK|TERRNO, cleanup, "strtol");
>     if (endptr == str || *endptr != '\0')
>         tst_brkm(TBROK, cleanup, "Invalid number parameter: %s", str);
> 
>>  
>>      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;
> 
> better to keep TEST_PAUSE;


yes, I will.


Thanks
-Wanlong Gao

> 
>> -
>> +    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");
>>  }
> 
> 



------------------------------------------------------------------------------
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