diff --git a/reaper.cpp b/reaper.cpp index 2c9e737..8603793 100644 --- a/reaper.cpp +++ b/reaper.cpp @@ -64,6 +64,10 @@ static void* reaper_main(void* param) { ALOGE("Failed to assign cpuset to the reaper thread"); } + if (setpriority(PRIO_PROCESS, tid, ANDROID_PRIORITY_HIGHEST)) { + ALOGW("Unable to raise priority of the reaper thread (%d): errno=%d", tid, errno); + } + for (;;) { target = reaper->dequeue_request(); @@ -112,6 +116,9 @@ bool Reaper::is_reaping_supported() { bool Reaper::init(int comm_fd) { char name[16]; + struct sched_param param = { + .sched_priority = 0, + }; if (thread_cnt_ > 0) { // init should not be called multiple times @@ -124,6 +131,10 @@ bool Reaper::init(int comm_fd) { ALOGE("pthread_create failed: %s", strerror(errno)); continue; } + // set normal scheduling policy for the reaper thread + if (pthread_setschedparam(thread_pool_[thread_cnt_], SCHED_OTHER, ¶m)) { + ALOGW("set SCHED_FIFO failed %s", strerror(errno)); + } snprintf(name, sizeof(name), "lmkd_reaper%d", thread_cnt_); if (pthread_setname_np(thread_pool_[thread_cnt_], name)) { ALOGW("pthread_setname_np failed: %s", strerror(errno));