Move reboot() from common.h into otautil/sysutil.h.
This breaks the dependency on common.h (which belongs to
recovery/librecovery) from librecovery_ui. reboot() is now owned by
libotautil, which is expected to be a leaf node to be depended on.
With the change, recovery and updater also share the same reboot() code
now.
Test: mmma -j bootable/recovery
Change-Id: I1cc5d702cfe49302048db33d31c9c87ddc97ac71
diff --git a/Android.mk b/Android.mk
index acff24a..abe1b83 100644
--- a/Android.mk
+++ b/Android.mk
@@ -65,6 +65,7 @@
LOCAL_STATIC_LIBRARIES := \
libminui \
+ libotautil \
libbase
ifneq ($(TARGET_RECOVERY_UI_MARGIN_HEIGHT),)
diff --git a/common.h b/common.h
index 33c5ba0..de536fd 100644
--- a/common.h
+++ b/common.h
@@ -48,6 +48,4 @@
bool is_ro_debuggable();
-bool reboot(const std::string& command);
-
#endif // RECOVERY_COMMON_H
diff --git a/otautil/Android.bp b/otautil/Android.bp
index 0be019c..b058f7b 100644
--- a/otautil/Android.bp
+++ b/otautil/Android.bp
@@ -48,6 +48,7 @@
static_libs: [
"libselinux",
+ "libcutils",
],
},
},
diff --git a/otautil/include/otautil/sysutil.h b/otautil/include/otautil/sysutil.h
index 52f6d20..649f8ff 100644
--- a/otautil/include/otautil/sysutil.h
+++ b/otautil/include/otautil/sysutil.h
@@ -50,4 +50,8 @@
std::vector<MappedRange> ranges_;
};
+// Wrapper function to trigger a reboot, by additionally handling quiescent reboot mode. The
+// command should start with "reboot," (e.g. "reboot,bootloader" or "reboot,").
+bool reboot(const std::string& command);
+
#endif // _OTAUTIL_SYSUTIL
diff --git a/otautil/sysutil.cpp b/otautil/sysutil.cpp
index e6385c4..ab15130 100644
--- a/otautil/sysutil.cpp
+++ b/otautil/sysutil.cpp
@@ -28,8 +28,10 @@
#include <android-base/file.h>
#include <android-base/logging.h>
+#include <android-base/properties.h>
#include <android-base/strings.h>
#include <android-base/unique_fd.h>
+#include <cutils/android_reboot.h>
bool MemMapping::MapFD(int fd) {
struct stat sb;
@@ -201,3 +203,11 @@
};
ranges_.clear();
}
+
+bool reboot(const std::string& command) {
+ std::string cmd = command;
+ if (android::base::GetBoolProperty("ro.boot.quiescent", false)) {
+ cmd += ",quiescent";
+ }
+ return android::base::SetProperty(ANDROID_RB_PROPERTY, cmd);
+}
diff --git a/recovery.cpp b/recovery.cpp
index d8f56b8..7219771 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -70,6 +70,7 @@
#include "otautil/dirutil.h"
#include "otautil/error_code.h"
#include "otautil/paths.h"
+#include "otautil/sysutil.h"
#include "roots.h"
#include "rotate_logs.h"
#include "screen_ui.h"
@@ -177,14 +178,6 @@
return android::base::GetBoolProperty("ro.debuggable", false);
}
-bool reboot(const std::string& command) {
- std::string cmd = command;
- if (android::base::GetBoolProperty("ro.boot.quiescent", false)) {
- cmd += ",quiescent";
- }
- return android::base::SetProperty(ANDROID_RB_PROPERTY, cmd);
-}
-
// command line args come from, in decreasing precedence:
// - the actual command line
// - the bootloader control block (one per line, after "recovery")
diff --git a/ui.cpp b/ui.cpp
index 3c9ded7..8983d76 100644
--- a/ui.cpp
+++ b/ui.cpp
@@ -36,14 +36,12 @@
#include <android-base/file.h>
#include <android-base/logging.h>
#include <android-base/parseint.h>
-#include <android-base/properties.h>
#include <android-base/strings.h>
-#include <cutils/android_reboot.h>
#include <minui/minui.h>
-#include "common.h"
-#include "roots.h"
#include "device.h"
+#include "otautil/sysutil.h"
+#include "roots.h"
static constexpr int UI_WAIT_KEY_TIMEOUT_SEC = 120;
static constexpr const char* BRIGHTNESS_FILE = "/sys/class/leds/lcd-backlight/brightness";
diff --git a/updater/install.cpp b/updater/install.cpp
index b41d48c..bd22467 100644
--- a/updater/install.cpp
+++ b/updater/install.cpp
@@ -48,7 +48,6 @@
#include <android-base/strings.h>
#include <applypatch/applypatch.h>
#include <bootloader_message/bootloader_message.h>
-#include <cutils/android_reboot.h>
#include <ext4_utils/wipe.h>
#include <openssl/sha.h>
#include <selinux/label.h>
@@ -62,6 +61,7 @@
#include "otautil/error_code.h"
#include "otautil/mounts.h"
#include "otautil/print_sha1.h"
+#include "otautil/sysutil.h"
#include "updater/updater.h"
// Send over the buffer to recovery though the command pipe.
@@ -874,11 +874,7 @@
return StringValue("");
}
- std::string reboot_cmd = "reboot," + property;
- if (android::base::GetBoolProperty("ro.boot.quiescent", false)) {
- reboot_cmd += ",quiescent";
- }
- android::base::SetProperty(ANDROID_RB_PROPERTY, reboot_cmd);
+ reboot("reboot," + property);
sleep(5);
return ErrorAbort(state, kRebootFailure, "%s() failed to reboot", name);