hugetlb: checking if hugepage is supported on target system
PATCH v3 1/1 hugetlb: checking if hugepage is supported on target system
Signed-off-by Li Wang <[email protected]>
v2 --> v3
1. (unsigned int) ---> (ssize_t)
2. make the check_hugepage() more simply
--- 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 (write (fd, shmmax,strlen (shmmax)) != (ssize_t )strlen (shmmax))tst_resm (TWARN |TERRNO ,"write" );close (fd); }
@@ -262,7 +261,7 @@ static void cleanup(void)tst_resm (TWARN |TERRNO ,"open" );tst_resm (TINFO ,"restore nr_hugepages to %s." , nr_hugepages);if (write (fd, nr_hugepages, -strlen (nr_hugepages)) !=strlen (nr_hugepages)) +strlen (nr_hugepages)) != (ssize_t )strlen (nr_hugepages))tst_resm (TWARN |TERRNO ,"write" );close (fd);
@@ -272,7 +271,7 @@ static void cleanup(void)tst_resm (TINFO ,"restore nr_overcommit_hugepages to %s." , nr_overcommit_hugepages);if (write (fd, nr_overcommit_hugepages,strlen (nr_overcommit_hugepages)) - !=strlen (nr_overcommit_hugepages)) + != (ssize_t )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 (write (fd, buf,strlen (buf)) != (ssize_t )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 (write (fd, buf,strlen (buf)) != (ssize_t )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 (write (fd, buf,strlen (buf)) != (ssize_t )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 )) +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 )) +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 v3 1/1 hugetlb: checking if hugepage is supported on target system
Hi,
Quoted 10 lines · Li Wang
Signed-off-by Li Wang <[email protected]>v2 --> v3
1. (unsigned int) ---> (ssize_t)
2. make thecheck_hugepage()more simply--- testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c | 1 + testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c | 2 ++ testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c | 1 +
Almost right, we need to include such comments after 3 dash lines ("---").
In case your git version new enough, you can also add them with git format-patch --notes, see man git-notes.
Thanks,
Alexey