summaryrefslogtreecommitdiff
path: root/init/reboot_utils.cpp
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2019-09-07 23:17:14 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-09-07 23:17:14 +0000
commitd4ed43083ee5fdf7db13e56d66a8755c0562964c (patch)
treeb96f38a53621364f5287d8068a456917c7d4f087 /init/reboot_utils.cpp
parentc5600d0ce31d315e812ade8e99e06b7ebeb2c58f (diff)
parent271014e8325f17ac1fcf83dede7ce987c293fb2c (diff)
Snap for 5860054 from 271014e8325f17ac1fcf83dede7ce987c293fb2c to qt-qpr1-release
Change-Id: Id2b5606023752261dc90ad321b522ef0914fb69d
Diffstat (limited to 'init/reboot_utils.cpp')
-rw-r--r--init/reboot_utils.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/init/reboot_utils.cpp b/init/reboot_utils.cpp
index d1a712f2e..de085cc9b 100644
--- a/init/reboot_utils.cpp
+++ b/init/reboot_utils.cpp
@@ -21,11 +21,12 @@
#include <string>
-#include "android-base/file.h"
-#include "android-base/logging.h"
-#include "android-base/strings.h"
-#include "backtrace/Backtrace.h"
-#include "cutils/android_reboot.h"
+#include <android-base/file.h>
+#include <android-base/logging.h>
+#include <android-base/properties.h>
+#include <android-base/strings.h>
+#include <backtrace/Backtrace.h>
+#include <cutils/android_reboot.h>
#include "capabilities.h"
@@ -93,7 +94,14 @@ void __attribute__((noreturn)) RebootSystem(unsigned int cmd, const std::string&
break;
case ANDROID_RB_THERMOFF:
- reboot(RB_POWER_OFF);
+ if (android::base::GetBoolProperty("ro.thermal_warmreset", false)) {
+ 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);
+ } else {
+ reboot(RB_POWER_OFF);
+ }
break;
}
// In normal case, reboot should not return.