NOTE: It's wise NOT to use safe macros in test cleanup(). This is because
all safe macros call tst_brkm(), which exits the test immediately, making
the cleanup() exit prematurely. (Actually, this is hacked around in
the test library at the moment so that the cleanup() will finish, but
the hack will be removed in the future).
Signed-off-by: Li Wang <[email protected]>
---
testcases/kernel/mem/thp/thp05.c | 69 ++++++++++++++++++++++++++++++++--------
1 file changed, 56 insertions(+), 13 deletions(-)
diff --git a/testcases/kernel/mem/thp/thp05.c b/testcases/kernel/mem/thp/thp05.c
index 8b595ca..92d9610 100644
--- a/testcases/kernel/mem/thp/thp05.c
+++ b/testcases/kernel/mem/thp/thp05.c
@@ -66,6 +66,7 @@ option_t thp_options[] = {
static int pre_thp_scan_sleep_millisecs;
static int pre_thp_alloc_sleep_millisecs;
static char pre_thp_enabled[BUFSIZ];
+static char buf[BUFSIZ], path[BUFSIZ];
int main(int argc, char *argv[])
{
@@ -129,19 +130,61 @@ void setup(void)
void cleanup(void)
{
- SAFE_FILE_PRINTF(NULL, PATH_KHPD "scan_sleep_millisecs",
- "%d", pre_thp_scan_sleep_millisecs);
-
- SAFE_FILE_PRINTF(NULL, PATH_KHPD "alloc_sleep_millisecs",
- "%d", pre_thp_alloc_sleep_millisecs);
-
- 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");
-
+ int fd;
+
+ /* restore the scan_sleep_millisecs to original value */
+ snprintf(buf, BUFSIZ, "%d", pre_thp_scan_sleep_millisecs);
+ fd = open(PATH_KHPD "scan_sleep_millisecs", O_WRONLY);
+ if (fd == -1)
+ tst_resm(TWARN | TERRNO, "open");
+ tst_resm(TINFO, "restore scan_sleep_millisecs to %d",
+ pre_thp_scan_sleep_millisecs);
+ if (write(fd, buf, strlen(buf)) != strlen(buf))
+ tst_resm(TWARN | TERRNO, "write");
+ close(fd);
+
+ /* restore the alloc_sleep_millisecs to original value */
+ snprintf(buf, BUFSIZ, "%d", pre_thp_alloc_sleep_millisecs);
+ fd = open(PATH_KHPD "alloc_sleep_millisecs", O_WRONLY);
+ if (fd == -1)
+ tst_resm(TWARN | TERRNO, "open");
+ tst_resm(TINFO, "restore alloc_sleep_millisecs to %d",
+ pre_thp_alloc_sleep_millisecs);
+ if (write(fd, buf, strlen(buf)) != strlen(buf))
+ tst_resm(TWARN | TERRNO, "write");
+ close(fd);
+
+ /* restore the transparent_hugepage options to original state */
+ if (strcmp(pre_thp_enabled, "[always] madvise never") == 0){
+ snprintf(path, BUFSIZ, "always");
+ fd = open(PATH_THP "enabled", O_WRONLY);
+ if (fd == -1)
+ tst_resm(TWARN | TERRNO, "open");
+ tst_resm(TINFO, "restore transparent_hugepage to %s", path);
+ if (write(fd, path, strlen(path)) != strlen(path))
+ tst_resm(TWARN | TERRNO, "write");
+ close(fd);
+ }
+ else if (strcmp(pre_thp_enabled, "always [madvise] never") == 0){
+ snprintf(path, BUFSIZ, "madvise");
+ fd = open(PATH_THP "enabled", O_WRONLY);
+ if (fd == -1)
+ tst_resm(TWARN | TERRNO, "open");
+ tst_resm(TINFO, "restore transparent_hugepage to %s", path);
+ if (write(fd, path, strlen(path)) != strlen(path))
+ tst_resm(TWARN | TERRNO, "write");
+ close(fd);
+ }
+ else{
+ snprintf(path, BUFSIZ, "never");
+ fd = open(PATH_THP "enabled", O_WRONLY);
+ if (fd == -1)
+ tst_resm(TWARN | TERRNO, "open");
+ tst_resm(TINFO, "restore transparent_hugepage to %s", path);
+ if (write(fd, path, strlen(path)) != strlen(path))
+ tst_resm(TWARN | TERRNO, "write");
+ close(fd);
+ }
TEST_CLEANUP;
}
--
1.9.3
------------------------------------------------------------------------------
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list