diff --git a/reaper.cpp b/reaper.cpp index d5d7939..bd1d6f6 100644 --- a/reaper.cpp +++ b/reaper.cpp @@ -53,41 +53,6 @@ static inline long get_time_diff_ms(struct timespec *from, (to->tv_nsec - from->tv_nsec) / (long)NS_PER_MS; } -static void set_process_group_and_prio(uid_t uid, int pid, const std::vector& profiles, - int prio) { - DIR* d; - char proc_path[PATH_MAX]; - struct dirent* de; - - if (!SetProcessProfilesCached(uid, pid, profiles)) { - ALOGW("Failed to set task profiles for the process (%d) being killed", pid); - } - - snprintf(proc_path, sizeof(proc_path), "/proc/%d/task", pid); - if (!(d = opendir(proc_path))) { - ALOGW("Failed to open %s; errno=%d: process pid(%d) might have died", proc_path, errno, - pid); - return; - } - - while ((de = readdir(d))) { - int t_pid; - - if (de->d_name[0] == '.') continue; - t_pid = atoi(de->d_name); - - if (!t_pid) { - ALOGW("Failed to get t_pid for '%s' of pid(%d)", de->d_name, pid); - continue; - } - - if (setpriority(PRIO_PROCESS, t_pid, prio) && errno != ESRCH) { - ALOGW("Unable to raise priority of killing t_pid (%d): errno=%d", t_pid, errno); - } - } - closedir(d); -} - static void* reaper_main(void* param) { Reaper *reaper = static_cast(param); struct timespec start_tm, end_tm; @@ -115,11 +80,6 @@ static void* reaper_main(void* param) { reaper->notify_kill_failure(target.pid); goto done; } - - set_process_group_and_prio(target.uid, target.pid, - {"CPUSET_SP_FOREGROUND", "SCHED_SP_FOREGROUND"}, - ANDROID_PRIORITY_NORMAL); - if (process_mrelease(target.pidfd, 0)) { ALOGE("process_mrelease %d failed: %s", target.pidfd, strerror(errno)); goto done; @@ -130,6 +90,13 @@ static void* reaper_main(void* param) { get_time_diff_ms(&start_tm, &end_tm)); } + if (!SetProcessProfilesCached(target.uid, target.pid, + {"CPUSET_SP_FOREGROUND", "SCHED_SP_FOREGROUND"})) { + if (reaper->debug_enabled()) { + ALOGW("Failed to set task profiles for the process (%d) being killed", target.pid); + } + } + done: close(target.pidfd); reaper->request_complete();