Loading init/reboot.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -608,7 +608,7 @@ static void DoReboot(unsigned int cmd, const std::string& reason, const std::str if (sem_init(&reboot_semaphore, false, 0) == -1) { // These should never fail, but if they do, skip the graceful reboot and reboot immediately. LOG(ERROR) << "sem_init() fail and RebootSystem() return!"; RebootSystem(cmd, reboot_target); RebootSystem(cmd, reboot_target, reason); } // Start a thread to monitor init shutdown process Loading Loading @@ -636,7 +636,7 @@ static void DoReboot(unsigned int cmd, const std::string& reason, const std::str // worry about unmounting it. if (!IsDataMounted("*")) { sync(); RebootSystem(cmd, reboot_target); RebootSystem(cmd, reboot_target, reason); abort(); } Loading Loading @@ -769,7 +769,7 @@ static void DoReboot(unsigned int cmd, const std::string& reason, const std::str LOG(INFO) << "Shutdown /data"; } } RebootSystem(cmd, reboot_target); RebootSystem(cmd, reboot_target, reason); abort(); } Loading init/reboot_utils.cpp +6 −3 Original line number Diff line number Diff line Loading @@ -106,7 +106,8 @@ bool IsRebootCapable() { return value == CAP_SET; } void __attribute__((noreturn)) RebootSystem(unsigned int cmd, const std::string& rebootTarget) { void __attribute__((noreturn)) RebootSystem(unsigned int cmd, const std::string& rebootTarget, const std::string& reboot_reason) { LOG(INFO) << "Reboot ending, jumping to kernel"; if (!IsRebootCapable()) { Loading @@ -127,10 +128,12 @@ void __attribute__((noreturn)) RebootSystem(unsigned int cmd, const std::string& case ANDROID_RB_THERMOFF: if (android::base::GetBoolProperty("ro.thermal_warmreset", false)) { std::string reason = "shutdown,thermal"; if (!reboot_reason.empty()) reason = reboot_reason; LOG(INFO) << "Try to trigger a warm reset for thermal shutdown"; static constexpr const char kThermalShutdownTarget[] = "shutdown,thermal"; syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_RESTART2, kThermalShutdownTarget); LINUX_REBOOT_CMD_RESTART2, reason.c_str()); } else { reboot(RB_POWER_OFF); } Loading init/reboot_utils.h +2 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,8 @@ void SetFatalRebootTarget(const std::optional<std::string>& reboot_target = std: // so if any of the attempts to determine this fail, it will still return true. bool IsRebootCapable(); // This is a wrapper around the actual reboot calls. void __attribute__((noreturn)) RebootSystem(unsigned int cmd, const std::string& reboot_target); void __attribute__((noreturn)) RebootSystem(unsigned int cmd, const std::string& reboot_target, const std::string& reboot_reason = ""); void __attribute__((noreturn)) InitFatalReboot(int signal_number); void InstallRebootSignalHandlers(); Loading Loading
init/reboot.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -608,7 +608,7 @@ static void DoReboot(unsigned int cmd, const std::string& reason, const std::str if (sem_init(&reboot_semaphore, false, 0) == -1) { // These should never fail, but if they do, skip the graceful reboot and reboot immediately. LOG(ERROR) << "sem_init() fail and RebootSystem() return!"; RebootSystem(cmd, reboot_target); RebootSystem(cmd, reboot_target, reason); } // Start a thread to monitor init shutdown process Loading Loading @@ -636,7 +636,7 @@ static void DoReboot(unsigned int cmd, const std::string& reason, const std::str // worry about unmounting it. if (!IsDataMounted("*")) { sync(); RebootSystem(cmd, reboot_target); RebootSystem(cmd, reboot_target, reason); abort(); } Loading Loading @@ -769,7 +769,7 @@ static void DoReboot(unsigned int cmd, const std::string& reason, const std::str LOG(INFO) << "Shutdown /data"; } } RebootSystem(cmd, reboot_target); RebootSystem(cmd, reboot_target, reason); abort(); } Loading
init/reboot_utils.cpp +6 −3 Original line number Diff line number Diff line Loading @@ -106,7 +106,8 @@ bool IsRebootCapable() { return value == CAP_SET; } void __attribute__((noreturn)) RebootSystem(unsigned int cmd, const std::string& rebootTarget) { void __attribute__((noreturn)) RebootSystem(unsigned int cmd, const std::string& rebootTarget, const std::string& reboot_reason) { LOG(INFO) << "Reboot ending, jumping to kernel"; if (!IsRebootCapable()) { Loading @@ -127,10 +128,12 @@ void __attribute__((noreturn)) RebootSystem(unsigned int cmd, const std::string& case ANDROID_RB_THERMOFF: if (android::base::GetBoolProperty("ro.thermal_warmreset", false)) { std::string reason = "shutdown,thermal"; if (!reboot_reason.empty()) reason = reboot_reason; LOG(INFO) << "Try to trigger a warm reset for thermal shutdown"; static constexpr const char kThermalShutdownTarget[] = "shutdown,thermal"; syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_RESTART2, kThermalShutdownTarget); LINUX_REBOOT_CMD_RESTART2, reason.c_str()); } else { reboot(RB_POWER_OFF); } Loading
init/reboot_utils.h +2 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,8 @@ void SetFatalRebootTarget(const std::optional<std::string>& reboot_target = std: // so if any of the attempts to determine this fail, it will still return true. bool IsRebootCapable(); // This is a wrapper around the actual reboot calls. void __attribute__((noreturn)) RebootSystem(unsigned int cmd, const std::string& reboot_target); void __attribute__((noreturn)) RebootSystem(unsigned int cmd, const std::string& reboot_target, const std::string& reboot_reason = ""); void __attribute__((noreturn)) InitFatalReboot(int signal_number); void InstallRebootSignalHandlers(); Loading