Merge "Add MCL_ONFAULT to mlockall" am: ccb9960beb am: 179c81f733

am: 1592d9b458

Change-Id: I55420b49d0902dc00b5741294c05a1320bf13325
This commit is contained in:
Daniel Colascione 2018-01-24 08:31:28 +00:00 committed by android-build-merger
commit dba30fb82c
1 changed files with 10 additions and 1 deletions

11
lmkd.c
View File

@ -1112,7 +1112,16 @@ int main(int argc __unused, char **argv __unused) {
kill_timeout_ms =
(unsigned long)property_get_int32("ro.lmk.kill_timeout_ms", 0);
if (mlockall(MCL_CURRENT | MCL_FUTURE))
// MCL_ONFAULT pins pages as they fault instead of loading
// everything immediately all at once. (Which would be bad,
// because as of this writing, we have a lot of mapped pages we
// never use.) Old kernels will see MCL_ONFAULT and fail with
// EINVAL; we ignore this failure.
//
// N.B. read the man page for mlockall. MCL_CURRENT | MCL_ONFAULT
// pins ⊆ MCL_CURRENT, converging to just MCL_CURRENT as we fault
// in pages.
if (mlockall(MCL_CURRENT | MCL_FUTURE | MCL_ONFAULT) && errno != EINVAL)
ALOGW("mlockall failed: errno=%d", errno);
sched_setscheduler(0, SCHED_FIFO, &param);