hugetlb: checking if hugepage is supported on target system
PATCH v2 1/1 hugetlb: checking if hugepage is supported on target system
--- testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c | 1 + testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c | 2 ++ testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c | 1 + testcases/kernel/mem/hugetlb/hugemmap/hugemmap05.c | 26 +++++++++++----------- .../kernel/mem/hugetlb/hugeshmat/hugeshmat01.c | 1 + .../kernel/mem/hugetlb/hugeshmat/hugeshmat02.c | 1 + .../kernel/mem/hugetlb/hugeshmat/hugeshmat03.c | 1 + .../kernel/mem/hugetlb/hugeshmat/hugeshmat04.c | 1 + .../kernel/mem/hugetlb/hugeshmctl/hugeshmctl01.c | 1 + .../kernel/mem/hugetlb/hugeshmctl/hugeshmctl02.c | 1 + .../kernel/mem/hugetlb/hugeshmctl/hugeshmctl03.c | 1 + .../kernel/mem/hugetlb/hugeshmdt/hugeshmdt01.c | 1 + .../kernel/mem/hugetlb/hugeshmget/hugeshmget01.c | 1 + .../kernel/mem/hugetlb/hugeshmget/hugeshmget02.c | 1 + .../kernel/mem/hugetlb/hugeshmget/hugeshmget03.c | 1 + .../kernel/mem/hugetlb/hugeshmget/hugeshmget05.c | 1 + testcases/kernel/mem/include/mem.h | 2 ++ testcases/kernel/mem/lib/mem.c | 6 +++++ testcases/kernel/syscalls/futex/futex_wake04.c | 4 ++++ 19 files changed, 41 insertions(+), 13 deletions(-)
testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c +1 -0
@@ -159,6 +159,7 @@ void setup(void) {TEST_PAUSE ;tst_require_root (); +check_hugepage ();if (mount ("none" , Hopt,"hugetlbfs" ,0 ,NULL ) <0 )tst_brkm (TBROK |TERRNO ,NULL ,"mount failed on %s" , Hopt);
testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c +2 -0
@@ -93,6 +93,8 @@ int main(int ac, char **av)tst_parse_opts (ac, av, options, &help); +check_hugepage (); +if (!Hflag) {tst_tmpdir (); Hopt =tst_get_tmpdir ();
testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c +1 -0
@@ -175,6 +175,7 @@ void setup(void) {TEST_PAUSE ;tst_require_root (); +check_hugepage ();if (mount ("none" , Hopt,"hugetlbfs" ,0 ,NULL ) <0 )tst_brkm (TBROK |TERRNO ,NULL ,"mount failed on %s" , Hopt); orig_hugepages =get_sys_tune ("nr_hugepages" );
testcases/kernel/mem/hugetlb/hugemmap/hugemmap05.c +13 -13
@@ -48,6 +48,7 @@#include <string.h> #include <ctype.h> #include "test.h" +#include "mem.h" #define PROTECTION (PROT_READ | PROT_WRITE)#define PATH_MEMINFO "/proc/meminfo"
@@ -97,9 +98,7 @@ static option_t options[] = { {NULL, NULL, NULL} }; -static void setup (void ); -static void cleanup (void ); -static void overcommit (void ); +static void overcommit1 (void );static void write_bytes (void *addr);static void read_bytes (void *addr);static int lookup (char *line,char *pattern);
@@ -132,13 +131,13 @@ int main(int argc, char *argv[])setup ();for (lc =0 ;TEST_LOOPING (lc); lc++) { tst_count =0 ; -overcommit (); +overcommit1 (); }cleanup ();tst_exit (); } -static void overcommit (void ) +static void overcommit1 (void ) {void *addr =NULL , *shmaddr =NULL ;int fd =-1 , key =-1 ;
@@ -245,7 +244,7 @@ static void overcommit(void) } } -static void cleanup (void ) +void cleanup (void ) {int fd;
@@ -253,7 +252,7 @@ static void cleanup(void) fd =open (PATH_SHMMAX ,O_WRONLY );if (fd ==-1 )tst_resm (TWARN |TERRNO ,"open" ); -if (write (fd, shmmax,strlen (shmmax)) !=strlen (shmmax)) +if ((unsigned int )write (fd, shmmax,strlen (shmmax)) !=strlen (shmmax))tst_resm (TWARN |TERRNO ,"write" );close (fd); }
@@ -261,7 +260,7 @@ static void cleanup(void)if (fd ==-1 )tst_resm (TWARN |TERRNO ,"open" );tst_resm (TINFO ,"restore nr_hugepages to %s." , nr_hugepages); -if (write (fd, nr_hugepages, +if ((unsigned int )write (fd, nr_hugepages,strlen (nr_hugepages)) !=strlen (nr_hugepages))tst_resm (TWARN |TERRNO ,"write" );close (fd);
@@ -271,7 +270,7 @@ static void cleanup(void)tst_resm (TWARN |TERRNO ,"open" );tst_resm (TINFO ,"restore nr_overcommit_hugepages to %s." , nr_overcommit_hugepages); -if (write (fd, nr_overcommit_hugepages,strlen (nr_overcommit_hugepages)) +if ((unsigned int )write (fd, nr_overcommit_hugepages,strlen (nr_overcommit_hugepages)) !=strlen (nr_overcommit_hugepages))tst_resm (TWARN |TERRNO ,"write" );close (fd);
@@ -287,7 +286,7 @@ static void cleanup(void)tst_rmdir (); } -static void setup (void ) +void setup (void ) {FILE *fp;int fd;
@@ -321,7 +320,7 @@ static void setup(void)tst_brkm (TBROK |TERRNO , cleanup,"open" );snprintf (buf,BUFSIZ ,"%ld" , (long )(length /2 * hugepagesize)); -if (write (fd, buf,strlen (buf)) !=strlen (buf)) +if ((unsigned int )write (fd, buf,strlen (buf)) !=strlen (buf))tst_brkm (TBROK |TERRNO , cleanup,"failed to change shmmax." ); }
@@ -345,7 +344,7 @@ static void setup(void)if (lseek (fd,0 ,SEEK_SET ) ==-1 )tst_brkm (TBROK |TERRNO , cleanup,"lseek" );snprintf (buf,BUFSIZ ,"%zd" , size); -if (write (fd, buf,strlen (buf)) !=strlen (buf)) +if ((unsigned int )write (fd, buf,strlen (buf)) !=strlen (buf))tst_brkm (TBROK |TERRNO , cleanup,"failed to change nr_hugepages." );close (fd);
@@ -369,7 +368,7 @@ static void setup(void)if (lseek (fd,0 ,SEEK_SET ) ==-1 )tst_brkm (TBROK |TERRNO , cleanup,"lseek" );snprintf (buf,BUFSIZ ,"%zd" , size); -if (write (fd, buf,strlen (buf)) !=strlen (buf)) +if ((unsigned int )write (fd, buf,strlen (buf)) !=strlen (buf))tst_brkm (TBROK |TERRNO , cleanup,"failed to change nr_hugepages." );close (fd);
@@ -467,6 +466,7 @@ static void init_hugepagesize(void) {FILE *fp; +check_hugepage ();memset (buf,-1 ,BUFSIZ ); fp =fopen (PATH_MEMINFO ,"r" );if (fp ==NULL )
testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat01.c +1 -0
@@ -209,6 +209,7 @@ void setup(void)long hpage_size;tst_require_root (); +check_hugepage ();tst_sig (NOFORK ,DEF_HANDLER , cleanup);tst_tmpdir ();
testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat02.c +1 -0
@@ -125,6 +125,7 @@ void setup(void)long hpage_size;tst_require_root (); +check_hugepage ();tst_sig (NOFORK ,DEF_HANDLER , cleanup);tst_tmpdir ();
testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat03.c +1 -0
@@ -131,6 +131,7 @@ void setup(void)long hpage_size;tst_require_root (); +check_hugepage ();tst_sig (FORK ,DEF_HANDLER , cleanup);tst_tmpdir ();
testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat04.c +1 -0
@@ -126,6 +126,7 @@ void setup(void)long mem_total, hpage_size;tst_require_root (); +check_hugepage (); mem_total =read_meminfo ("MemTotal:" );SAFE_FILE_SCANF (NULL ,PATH_SHMMAX ,"%ld" , &orig_shmmax);
testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl01.c +1 -0
@@ -392,6 +392,7 @@ void setup(void)long hpage_size;tst_require_root (); +check_hugepage ();tst_sig (FORK , sighandler, cleanup);tst_tmpdir ();
testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl02.c +1 -0
@@ -130,6 +130,7 @@ void setup(void)long hpage_size;tst_require_root (); +check_hugepage ();tst_sig (NOFORK ,DEF_HANDLER , cleanup);tst_tmpdir ();
testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl03.c +1 -0
@@ -156,6 +156,7 @@ void setup(void)long hpage_size;tst_require_root (); +check_hugepage ();tst_sig (FORK ,DEF_HANDLER , cleanup);tst_tmpdir ();
testcases/kernel/mem/hugetlb/hugeshmdt/hugeshmdt01.c +1 -0
@@ -165,6 +165,7 @@ void setup(void)long hpage_size;tst_require_root (); +check_hugepage ();tst_sig (NOFORK , sighandler, cleanup);tst_tmpdir ();
testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c +1 -0
@@ -143,6 +143,7 @@ void setup(void)long hpage_size;tst_require_root (); +check_hugepage ();tst_sig (NOFORK ,DEF_HANDLER , cleanup);tst_tmpdir ();
testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget02.c +1 -0
@@ -138,6 +138,7 @@ void setup(void)long hpage_size;tst_require_root (); +check_hugepage ();tst_sig (NOFORK ,DEF_HANDLER , cleanup);tst_tmpdir ();
testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget03.c +1 -0
@@ -113,6 +113,7 @@ void setup(void)long hpage_size;tst_require_root (); +check_hugepage ();tst_sig (NOFORK ,DEF_HANDLER , cleanup);tst_tmpdir ();
testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget05.c +1 -0
@@ -135,6 +135,7 @@ void setup(void)long hpage_size;tst_require_root (); +check_hugepage ();tst_sig (FORK ,DEF_HANDLER , cleanup);tst_tmpdir ();
testcases/kernel/mem/include/mem.h +2 -0
@@ -62,7 +62,9 @@ void thp_usage(void);/* HUGETLB */ #define PATH_SHMMAX "/proc/sys/kernel/shmmax" +#define PATH_HUGEPAGES "/sys/kernel/mm/hugepages/" +void check_hugepage (void );void write_memcg (void );void create_same_memory (int size,int num,int unit);int opt_num, opt_size, opt_unit;
testcases/kernel/mem/lib/mem.c +6 -0
@@ -314,6 +314,12 @@ static void verify(char **memory, char value, int proc,free (s); } +void check_hugepage (void ) +{ +if (access (PATH_HUGEPAGES ,F_OK ) ==-1 ) +tst_brkm (TCONF ,NULL ,"Huge page is not supported." ); +} +void write_memcg (void ) {SAFE_FILE_PRINTF (NULL ,MEMCG_LIMIT ,"%ld" ,TESTMEM );
testcases/kernel/syscalls/futex/futex_wake04.c +4 -0
@@ -50,6 +50,7 @@#define PATH_MEMINFO "/proc/meminfo"#define PATH_NR_HUGEPAGES "/proc/sys/vm/nr_hugepages" +#define PATH_HUGEPAGES "/sys/kernel/mm/hugepages/"const char *TCID ="futex_wake04" ;const int TST_TOTAL =1 ;
@@ -69,6 +70,9 @@ static void setup(void) "that are 2.6.32 or higher"); } +if (access (PATH_HUGEPAGES ,F_OK ) ==-1 ) +tst_brkm (TCONF ,NULL ,"Huge page is not supported." ); +tst_tmpdir ();SAFE_FILE_SCANF (NULL ,PATH_NR_HUGEPAGES ,"%ld" , &orig_hugepages);
Signature · 1 line
1.8.3.1
PATCH v2 1/1 hugetlb: checking if hugepage is supported on target system
Hi,
Quoted 2 lines · Li Wang
Signed-off-by Li Wang <[email protected]>---
...
testcases/kernel/mem/hugetlb/hugemmap/hugemmap05.c static void cleanup(void) · line 274
Quoted 12 lines
testcases/kernel/mem/hugetlb/hugemmap/hugemmap05.c +2
-2-if (write (fd, nr_hugepages, +if ((unsigned int )write (fd, nr_hugepages,strlen (nr_hugepages)) !=strlen (nr_hugepages))tst_resm (TWARN |TERRNO ,"write" );close (fd);@@ -271,7 +270,7 @@ static void cleanup(void)tst_resm (TWARN |TERRNO ,"open" );tst_resm (TINFO ,"restore nr_overcommit_hugepages to %s." , nr_overcommit_hugepages); -if (write (fd, nr_overcommit_hugepages,strlen (nr_overcommit_hugepages)) +if ((unsigned int )write (fd, nr_overcommit_hugepages,strlen (nr_overcommit_hugepages)) !=strlen (nr_overcommit_hugepages))
It would be better to use ssize_t, that way you won't exceed 80c per line as well.
if (write(fd, nr_overcommit_hugepages, strlen(nr_overcommit_hugepages))
!= (ssize_t)strlen(nr_overcommit_hugepages))
testcases/kernel/mem/hugetlb/hugemmap/hugemmap05.c static void cleanup(void) · line 289
Quoted 8 lines
testcases/kernel/mem/hugetlb/hugemmap/hugemmap05.c +1
-1tst_resm (TWARN |TERRNO ,"write" );close (fd);@@ -287,7 +286,7 @@ static void cleanup(void)tst_rmdir (); } -static void setup (void ) +void setup (void )
forgot "static"?
...
Quoted 9 lines
testcases/kernel/mem/lib/mem.c +0
-0@@ -314,6 +314,12 @@ static void verify(char **memory, char value, int proc,free (s); }
...
testcases/kernel/mem/lib/mem.c
Quoted 1 line
testcases/kernel/mem/lib/mem.c +1
-0+if (access (PATH_HUGEPAGES ,F_OK ) ==-1 )
Could be
if (access(PATH_HUGEPAGES, F_OK))
tss_brkm(...);
testcases/kernel/mem/lib/mem.c
Quoted 5 lines
testcases/kernel/mem/lib/mem.c +2
-0+tst_brkm (TCONF ,NULL ,"Huge page is not supported." ); +tst_tmpdir ();SAFE_FILE_SCANF (NULL ,PATH_NR_HUGEPAGES ,"%ld" , &orig_hugepages);
Thanks,
Alexey
PATCH v2 1/1 hugetlb: checking if hugepage is supported on target system
Hi,
Quoted 27 lines · Alexey Kodanev
Hi,
Quoted 3 lines · Li Wang
Signed-off-by Li Wang <[email protected]>---
...
Quoted 7 lines
testcases/kernel/mem/hugetlb/hugemmap/hugemmap05.c +1
-1-if (write (fd, nr_hugepages, +if ((unsigned int )write (fd, nr_hugepages,strlen (nr_hugepages)) !=strlen (nr_hugepages))tst_resm (TWARN |TERRNO ,"write" );close (fd);testcases/kernel/mem/hugetlb/hugemmap/hugemmap05.c static void cleanup(void) · line 276
Quoted 8 lines
testcases/kernel/mem/hugetlb/hugemmap/hugemmap05.c +1
-1@@ -271,7 +270,7 @@ static void cleanup(void)tst_resm (TWARN |TERRNO ,"open" );tst_resm (TINFO ,"restore nr_overcommit_hugepages to %s." , nr_overcommit_hugepages); - if (write(fd, nr_overcommit_hugepages, strlen(nr_overcommit_hugepages)) +if ((unsigned int )write (fd, nr_overcommit_hugepages,strlen (nr_overcommit_hugepages)) !=strlen (nr_overcommit_hugepages))It would be better to use
ssize_t, that way you won't exceed 80c per line as well.
Quoted 3 lines
if (
write(fd, nr_overcommit_hugepages, strlen(nr_overcommit_hugepages))!= (ssize_t)strlen(nr_overcommit_hugepages))
good.
Quoted 13 lines
tst_resm(TWARN | TERRNO, "write");testcases/kernel/mem/hugetlb/hugemmap/hugemmap05.c static void cleanup(void) · line 290
Quoted 7 lines
close(fd);testcases/kernel/mem/hugetlb/hugemmap/hugemmap05.c +1
-0@@ -287,7 +286,7 @@ static void cleanup(void)tst_rmdir (); } -static void setup(void) +void setup(void)forgot "static"?
no, it will be conflict with the prototype in mem.h and get compiler error
like:
-------
hugemmap05.c:253: error: static declaration of ?cleanup? follows non-static declaration /mnt/tests/kernel/distribution/ltp/generic/ltp-full-20150903/testcases/kernel/mem/include/mem.h:100:
note: previous declaration of ?cleanup? was here
hugemmap05.c:295: error: static declaration of ?setup? follows non-static declaration /mnt/tests/kernel/distribution/ltp/generic/ltp-full-20150903/testcases/kernel/mem/include/mem.h:101:
note: previous declaration of ?setup? was here
make: *** [hugemmap05] Error 1
Quoted 16 lines
...
Quoted 11 lines
diff --git
a/testcases/kernel/mem/lib/mem.cb/testcases/kernel/mem/lib/mem.c
index 215c052..84af3ce 100644testcases/kernel/mem/lib/mem.c +0
-0@@ -314,6 +314,12 @@ static void verify(char **memory, char value, int proc,free (s); }...
Quoted 6 lines
Quoted 2 lines
+ if (
access(PATH_HUGEPAGES, F_OK)== -1)Could be
if (access(PATH_HUGEPAGES, F_OK))tss_brkm(...);
looks good.
Quoted 10 lines
+
tst_brkm(TCONF, NULL, "Huge page is not supported.");Quoted 4 lines
+
tst_tmpdir(); SAFE_FILE_SCANF(NULL, PATH_NR_HUGEPAGES, "%ld", &orig_hugepages);Thanks,
Alexey
thanks for reviewing.
Signature · 6 lines
Regards, Li Wang Email: [email protected] -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.linux.it/pipermail/ltp/attachments/20151126/0b39a56f/attachment.html>
PATCH v2 1/1 hugetlb: checking if hugepage is supported on target system
Hi!
Quoted 15 lines
Quoted 2 lines
forgot "static"?
no, it will be conflict with the prototype in
mem.hand get compiler error
like:
-------
hugemmap05.c:253: error: static declaration of ???cleanup??? follows non-static declaration/mnt/tests/kernel/distribution/ltp/generic/ltp-full-20150903/testcases/kernel/mem/include/mem.h:100:
note: previous declaration of ???cleanup??? was here
hugemmap05.c:295: error: static declaration of ???setup??? follows non-static declaration/mnt/tests/kernel/distribution/ltp/generic/ltp-full-20150903/testcases/kernel/mem/include/mem.h:101:
note: previous declaration of ???setup??? was here
make: *** [hugemmap05] Error 1
Why have you added the function into the mem/include/mem.h in the first place? There is kernel/mem/hugetlb/lib/ directory allready, just make use of it.
Signature · 2 lines
Cyril Hrubis [email protected]
PATCH v2 1/1 hugetlb: checking if hugepage is supported on target system
Hi,
Quoted 18 lines · Cyril Hrubis
Hi!
Quoted 4 lines
Quoted 2 lines
forgot "static"?
no, it will be conflict with the prototype in
mem.hand get compilererror
Quoted 3 lines
like:
-------
hugemmap05.c:253: error: static declaration of ???cleanup??? followsnon-static
Quoted 2 lines
declaration
/mnt/tests/kernel/distribution/ltp/generic/ltp-full-20150903/testcases/kernel/mem/include/mem.h:100:Quoted 2 lines
note: previous declaration of ???cleanup??? was here hugemmap05.c:295: error: static declaration of ???setup??? follows
non-static
Quoted 2 lines
declaration
Quoted 8 lines
/mnt/tests/kernel/distribution/ltp/generic/ltp-full-20150903/testcases/kernel/mem/include/mem.h:101:Quoted 2 lines
note: previous declaration of ???setup??? was here
make: *** [hugemmap05] Error 1Why have you added the function into the
mem/include/mem.hin the first place? There iskernel/mem/hugetlb/lib/directory allready, just make use of it.
sounds good. how about moving the current hugetlb/lib/* two file:
ipcshm.h ---> hugetlb.hlibipc.c ----> hugetlb.c
and re-write some functions in it?
then we can take a good use of it to build a lib_hugetlb.a.
if all of you have no objection, I can do that.
Signature · 6 lines
Regards, Li Wang Email: [email protected] -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.linux.it/pipermail/ltp/attachments/20151127/f3d51b5e/attachment.html>