Loading llkd/README.md +6 −0 Original line number Diff line number Diff line Loading @@ -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(). Loading llkd/include/llkd.h +5 −3 Original line number Diff line number Diff line Loading @@ -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" Loading llkd/libllkd.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -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 Loading llkd/llkd.rc +32 −2 Original line number Diff line number Diff line # 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 Loading llkd/tests/llkd_test.cpp +20 −5 Original line number Diff line number Diff line Loading @@ -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) != Loading @@ -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()); Loading @@ -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 = 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, false); default_enable = android::base::GetBoolProperty(LLK_ENABLE_PROPERTY, default_enable); if (default_enable) { execute("start llkd"); rest(); Loading Loading
llkd/README.md +6 −0 Original line number Diff line number Diff line Loading @@ -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(). Loading
llkd/include/llkd.h +5 −3 Original line number Diff line number Diff line Loading @@ -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" Loading
llkd/libllkd.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
llkd/llkd.rc +32 −2 Original line number Diff line number Diff line # 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 Loading
llkd/tests/llkd_test.cpp +20 −5 Original line number Diff line number Diff line Loading @@ -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) != Loading @@ -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()); Loading @@ -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 = 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, false); default_enable = android::base::GetBoolProperty(LLK_ENABLE_PROPERTY, default_enable); if (default_enable) { execute("start llkd"); rest(); Loading