diff options
-rw-r--r-- | lib/drmtest.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/drmtest.c b/lib/drmtest.c index 75f49cd7..15ed8474 100644 --- a/lib/drmtest.c +++ b/lib/drmtest.c @@ -204,6 +204,16 @@ int drm_get_card(void) return -1; } +static void oom_adjust_for_doom(void) +{ + int fd; + const char always_kill[] = "1000"; + + fd = open("/proc/self/oom_score_adj", O_WRONLY); + igt_assert(fd != -1); + igt_assert(write(fd, always_kill, sizeof(always_kill)) == sizeof(always_kill)); +} + /** Open the first DRM device we can find, searching up to 16 device nodes */ static int __drm_open_any(void) { @@ -222,6 +232,8 @@ static int __drm_open_any(void) fd = -1; } + oom_adjust_for_doom(); + return fd; } @@ -251,6 +263,8 @@ static int __drm_open_any_render(void) return fd; } + oom_adjust_for_doom(); + return fd; } @@ -844,6 +858,7 @@ int igt_subtest_init_parse_opts(int argc, char **argv, } igt_install_exit_handler(check_igt_exit); + oom_adjust_for_doom(); out: return ret; @@ -1115,6 +1130,7 @@ bool __igt_fork_helper(struct igt_helper_process *proc) case 0: exit_handler_count = 0; reset_helper_process_list(); + oom_adjust_for_doom(); return true; default: @@ -1197,6 +1213,7 @@ bool __igt_fork(void) test_child = true; exit_handler_count = 0; reset_helper_process_list(); + oom_adjust_for_doom(); return true; default: |