diff --git a/lmkd/lmkd.c b/lmkd/lmkd.c index c0953158d..27cc91b75 100644 --- a/lmkd/lmkd.c +++ b/lmkd/lmkd.c @@ -31,6 +31,7 @@ #include #include +#include #include #include #include @@ -72,6 +73,9 @@ static int mpevfd[2]; #define CRITICAL_INDEX 1 #define MEDIUM_INDEX 0 +static int medium_oomadj; +static int critical_oomadj; + /* control socket listen and data */ static int ctrl_lfd; static int ctrl_dfd = -1; @@ -643,7 +647,7 @@ static void mp_event_common(bool is_critical) { int ret; unsigned long long evcount; bool first = true; - int min_adj_score = is_critical ? 0 : 800; + int min_adj_score = is_critical ? critical_oomadj : medium_oomadj; int index = is_critical ? CRITICAL_INDEX : MEDIUM_INDEX; ret = read(mpevfd[index], &evcount, sizeof(evcount)); @@ -822,6 +826,9 @@ int main(int argc __unused, char **argv __unused) { .sched_priority = 1, }; + medium_oomadj = property_get_int32("ro.lmk.medium", 800); + critical_oomadj = property_get_int32("ro.lmk.critical", 0); + mlockall(MCL_FUTURE); sched_setscheduler(0, SCHED_FIFO, ¶m); if (!init())