mem/lib: recall write_file & read_file functions

mem/thp04: rebuild the cleanup() by those two functions to avoid safe macros
being abused.

Signed-off-by: Li Wang <li...@redhat.com>
---
 testcases/kernel/mem/include/mem.h |  2 ++
 testcases/kernel/mem/lib/mem.c     | 25 +++++++++++++++++++++++++
 testcases/kernel/mem/thp/thp04.c   | 27 +++++++++++++++++----------
 3 files changed, 44 insertions(+), 10 deletions(-)

diff --git a/testcases/kernel/mem/include/mem.h 
b/testcases/kernel/mem/include/mem.h
index 8fa2094..3cb3580 100644
--- a/testcases/kernel/mem/include/mem.h
+++ b/testcases/kernel/mem/include/mem.h
@@ -96,6 +96,8 @@ int  path_exist(const char *path, ...);
 long read_meminfo(char *item);
 void set_sys_tune(char *sys_file, long tune, int check);
 long get_sys_tune(char *sys_file);
+void write_file(char *filename, char *buf);
+void read_file(char *filename, char *retbuf);
 void cleanup(void);
 void setup(void);
 
diff --git a/testcases/kernel/mem/lib/mem.c b/testcases/kernel/mem/lib/mem.c
index d3fc19d..3bd9f65 100644
--- a/testcases/kernel/mem/lib/mem.c
+++ b/testcases/kernel/mem/lib/mem.c
@@ -1065,6 +1065,31 @@ long get_sys_tune(char *sys_file)
        return tune;
 }
 
+void write_file(char *filename, char *buf)
+{
+       int fd;
+
+       fd = open(filename, O_WRONLY);
+       if (fd == -1)
+               tst_resm(TWARN | TERRNO, "open");
+       tst_resm(TINFO, "set %s value to %s", filename, buf);
+       if (write(fd, buf, strlen(buf)) != strlen(buf))
+               tst_resm(TWARN | TERRNO, "write");
+       close(fd);
+}
+
+void read_file(char *filename, char *retbuf)
+{
+       int fd;
+
+       fd = open(filename, O_RDONLY);
+       if (fd == -1)
+               tst_resm(TWARN | TERRNO, "open");
+       if (read(fd, retbuf, BUFSIZ) < 0)
+               tst_resm(TWARN | TERRNO, "read");
+       close(fd);
+}
+
 void update_shm_size(size_t * shm_size)
 {
        size_t shmmax;
diff --git a/testcases/kernel/mem/thp/thp04.c b/testcases/kernel/mem/thp/thp04.c
index 0b6baeb..4e9aa87 100644
--- a/testcases/kernel/mem/thp/thp04.c
+++ b/testcases/kernel/mem/thp/thp04.c
@@ -61,6 +61,7 @@ option_t thp_options[] = {
 
 static int pre_thp_scan_sleep_millisecs;
 static int pre_thp_alloc_sleep_millisecs;
+static char buf[BUFSIZ], path[BUFSIZ];
 static char pre_thp_enabled[BUFSIZ];
 
 int main(int argc, char *argv[])
@@ -120,23 +121,29 @@ void setup(void)
 
 void cleanup(void)
 {
-       SAFE_FILE_PRINTF(NULL, PATH_KHPD "scan_sleep_millisecs",
-                        "%d", pre_thp_scan_sleep_millisecs);
+       snprintf(buf, BUFSIZ, "%d", pre_thp_scan_sleep_millisecs);
+       write_file(PATH_KHPD "scan_sleep_millisecs", buf);
 
-       SAFE_FILE_PRINTF(NULL, PATH_KHPD "alloc_sleep_millisecs",
-                        "%d", pre_thp_alloc_sleep_millisecs);
+       snprintf(buf, BUFSIZ, "%d", pre_thp_alloc_sleep_millisecs);
+       write_file(PATH_KHPD "alloc_sleep_millisecs", buf);
 
        /*
         * The value of transparent_hugepage/enabled is speical,
         * we need to recover the previous value one by one for
         * the three mode: always, madvise, never.
         */
-       if (strcmp(pre_thp_enabled, "[always] madvise never") == 0)
-               SAFE_FILE_PRINTF(NULL, PATH_THP "enabled", "always");
-       else if (strcmp(pre_thp_enabled, "always [madvise] never") == 0)
-               SAFE_FILE_PRINTF(NULL, PATH_THP "enabled", "madvise");
-       else
-               SAFE_FILE_PRINTF(NULL, PATH_THP "enabled", "never");
+       if (strcmp(pre_thp_enabled, "[always] madvise never") == 0){
+               snprintf(path, BUFSIZ, "always");
+               write_file(PATH_THP "enabled", path);
+       }
+       else if (strcmp(pre_thp_enabled, "always [madvise] never") == 0){
+               snprintf(path, BUFSIZ, "madvise");
+               write_file(PATH_THP "enabled", path);
+       }
+       else{
+               snprintf(path, BUFSIZ, "never");
+               write_file(PATH_THP "enabled", path);
+       }
 
        TEST_CLEANUP;
 }
-- 
1.9.3


------------------------------------------------------------------------------
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to