Merge "llkd: default enabled for userdebug"

am: 1803782064

Change-Id: I82cc7f038f56651db8900a57b0bf2898200c4c6e
This commit is contained in:
Mark Salyzyn 2018-04-20 14:16:11 -07:00 committed by android-build-merger
commit c9692232e3
5 changed files with 67 additions and 10 deletions

View file

@ -66,9 +66,15 @@ default false, if true do not sysrq t (dump all threads).
#### ro.llk.enable
default false, allow live-lock daemon to be enabled.
#### llk.enable
default ro.llk.enable, and evaluated for eng.
#### ro.khungtask.enable
default false, allow [khungtask] daemon to be enabled.
#### khungtask.enable
default ro.khungtask.enable and evaluated for eng.
#### ro.llk.mlockall
default false, enable call to mlockall().

View file

@ -30,9 +30,11 @@ bool llkInit(const char* threadname); /* threadname NULL, not spawned */
unsigned llkCheckMilliseconds(void);
/* clang-format off */
#define LLK_ENABLE_PROPERTY "ro.llk.enable"
#define LLK_ENABLE_DEFAULT false
#define KHT_ENABLE_PROPERTY "ro.khungtask.enable"
#define LLK_ENABLE_WRITEABLE_PROPERTY "llk.enable"
#define LLK_ENABLE_PROPERTY "ro." LLK_ENABLE_WRITEABLE_PROPERTY
#define LLK_ENABLE_DEFAULT false /* "eng" and userdebug true */
#define KHT_ENABLE_WRITEABLE_PROPERTY "khungtask.enable"
#define KHT_ENABLE_PROPERTY "ro." KHT_ENABLE_WRITEABLE_PROPERTY
#define LLK_MLOCKALL_PROPERTY "ro.llk.mlockall"
#define LLK_MLOCKALL_DEFAULT true
#define LLK_TIMEOUT_MS_PROPERTY "ro.llk.timeout_ms"

View file

@ -1032,6 +1032,10 @@ unsigned llkCheckMilliseconds() {
bool llkInit(const char* threadname) {
llkLowRam = android::base::GetBoolProperty("ro.config.low_ram", false);
if (!LLK_ENABLE_DEFAULT && android::base::GetBoolProperty("ro.debuggable", false)) {
llkEnable = android::base::GetProperty(LLK_ENABLE_PROPERTY, "eng") == "eng";
khtEnable = android::base::GetProperty(KHT_ENABLE_PROPERTY, "eng") == "eng";
}
llkEnable = android::base::GetBoolProperty(LLK_ENABLE_PROPERTY, llkEnable);
if (llkEnable && !llkTopDirectory.reset(procdir)) {
// Most likely reason we could be here is llkd was started

View file

@ -1,11 +1,41 @@
# eng default for ro.llk.enable and ro.khungtask.enable
on property:ro.debuggable=*
setprop llk.enable ${ro.llk.enable:-0}
setprop khungtask.enable ${ro.khungtask.enable:-0}
on property:ro.debuggable=1
setprop llk.enable ${ro.llk.enable:-1}
setprop khungtask.enable ${ro.khungtask.enable:-1}
on property:ro.llk.enable=eng
setprop llk.enable ${ro.debuggable:-0}
on property:ro.khungtask.enable=eng
setprop khungtask.enable ${ro.debuggable:-0}
on property:llk.enable=1
setprop llk.enable true
on property:llk.enable=0
setprop llk.enable false
on property:khungtask.enable=1
setprop khungtask.enable true
on property:khungtask.enable=0
setprop khungtask.enable false
# Configure [khungtaskd]
on property:ro.khungtask.enable=true
on property:khungtask.enable=true
write /proc/sys/kernel/hung_task_timeout_secs ${ro.khungtask.timeout:-720}
write /proc/sys/kernel/hung_task_warnings 65535
write /proc/sys/kernel/hung_task_check_count 65535
write /proc/sys/kernel/hung_task_panic 1
on property:ro.llk.enable=true
on property:khungtask.enable=false
write /proc/sys/kernel/hung_task_panic 0
on property:llk.enable=true
start llkd
service llkd /system/bin/llkd

View file

@ -64,10 +64,16 @@ void execute(const char* command) {
}
seconds llkdSleepPeriod(char state) {
auto default_enable = android::base::GetBoolProperty(LLK_ENABLE_PROPERTY, LLK_ENABLE_DEFAULT);
if (android::base::GetProperty(LLK_ENABLE_PROPERTY, "nothing") == "nothing") {
GTEST_LOG_INFO << LLK_ENABLE_PROPERTY " defaults to " << (default_enable ? "true" : "false")
<< "\n";
auto default_eng = android::base::GetProperty(LLK_ENABLE_PROPERTY, "eng") == "eng";
auto default_enable = LLK_ENABLE_DEFAULT;
if (!LLK_ENABLE_DEFAULT && default_eng &&
android::base::GetBoolProperty("ro.debuggable", false)) {
default_enable = true;
}
default_enable = android::base::GetBoolProperty(LLK_ENABLE_PROPERTY, default_enable);
if (default_eng) {
GTEST_LOG_INFO << LLK_ENABLE_PROPERTY " defaults to \"eng\" thus "
<< (default_enable ? "true" : "false") << "\n";
}
// Hail Mary hope is unconfigured.
if ((GetUintProperty(LLK_TIMEOUT_MS_PROPERTY, LLK_TIMEOUT_MS_DEFAULT) !=
@ -78,6 +84,8 @@ seconds llkdSleepPeriod(char state) {
execute("stop llkd");
rest();
std::string setprop("setprop ");
execute((setprop + LLK_ENABLE_WRITEABLE_PROPERTY + " false").c_str());
rest();
execute((setprop + LLK_TIMEOUT_MS_PROPERTY + " 120000").c_str());
rest();
execute((setprop + KHT_TIMEOUT_PROPERTY + " 130").c_str());
@ -86,8 +94,15 @@ seconds llkdSleepPeriod(char state) {
rest();
execute((setprop + LLK_ENABLE_PROPERTY + " true").c_str());
rest();
execute((setprop + LLK_ENABLE_WRITEABLE_PROPERTY + " true").c_str());
rest();
}
default_enable = android::base::GetBoolProperty(LLK_ENABLE_PROPERTY, false);
default_enable = LLK_ENABLE_DEFAULT;
if (!LLK_ENABLE_DEFAULT && (android::base::GetProperty(LLK_ENABLE_PROPERTY, "eng") == "eng") &&
android::base::GetBoolProperty("ro.debuggable", false)) {
default_enable = true;
}
default_enable = android::base::GetBoolProperty(LLK_ENABLE_PROPERTY, default_enable);
if (default_enable) {
execute("start llkd");
rest();