Make lmkd memory pressure levels configurable.

By doing so different platforms can customize them accordingly.
For instance a low mem, 512MB device can do
ro.lmk.medium=400, while a device with more memory can keep
the default(800).

Test: tested on gobo.
Bug: 64316084
Change-Id: Ifc4f3853bc06f30488adb25883ccd9aaf683ba9b
diff --git a/lmkd/lmkd.c b/lmkd/lmkd.c
index c095315..27cc91b 100644
--- a/lmkd/lmkd.c
+++ b/lmkd/lmkd.c
@@ -31,6 +31,7 @@
 #include <sys/types.h>
 #include <unistd.h>
 
+#include <cutils/properties.h>
 #include <cutils/sockets.h>
 #include <log/log.h>
 #include <processgroup/processgroup.h>
@@ -72,6 +73,9 @@
 #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 @@
     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 @@
             .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, &param);
     if (!init())