Loading fs_mgr/libfstab/fstab_priv.h +0 −3 Original line number Original line Diff line number Diff line Loading @@ -39,9 +39,6 @@ std::string GetFstabPath(); void ImportBootconfigFromString(const std::string& bootconfig, void ImportBootconfigFromString(const std::string& bootconfig, const std::function<void(std::string, std::string)>& fn); const std::function<void(std::string, std::string)>& fn); bool GetBootconfigFromString(const std::string& bootconfig, const std::string& key, std::string* out); void ImportKernelCmdlineFromString(const std::string& cmdline, void ImportKernelCmdlineFromString(const std::string& cmdline, const std::function<void(std::string, std::string)>& fn); const std::function<void(std::string, std::string)>& fn); Loading fs_mgr/libfstab/include/fstab/fstab.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -153,5 +153,8 @@ bool GetKernelCmdline(const std::string& key, std::string* out); // Return the "other" slot for the given slot suffix. // Return the "other" slot for the given slot suffix. std::string OtherSlotSuffix(const std::string& suffix); std::string OtherSlotSuffix(const std::string& suffix); bool GetBootconfigFromString(const std::string& bootconfig, const std::string& key, std::string* out); } // namespace fs_mgr } // namespace fs_mgr } // namespace android } // namespace android init/first_stage_init.cpp +19 −0 Original line number Original line Diff line number Diff line Loading @@ -38,6 +38,7 @@ #include <android-base/logging.h> #include <android-base/logging.h> #include <android-base/stringprintf.h> #include <android-base/stringprintf.h> #include <android/avf_cc_flags.h> #include <android/avf_cc_flags.h> #include <fs_mgr.h> #include <modprobe/modprobe.h> #include <modprobe/modprobe.h> #include <private/android_filesystem_config.h> #include <private/android_filesystem_config.h> Loading Loading @@ -303,6 +304,22 @@ static BootMode GetBootMode(const std::string& cmdline, const std::string& bootc return BootMode::NORMAL_MODE; return BootMode::NORMAL_MODE; } } static void MaybeResumeFromHibernation(const std::string& bootconfig) { std::string hibernationResumeDevice; android::fs_mgr::GetBootconfigFromString(bootconfig, "androidboot.hibernation_resume_device", &hibernationResumeDevice); if (!hibernationResumeDevice.empty()) { android::base::unique_fd fd(open("/sys/power/resume", O_RDWR | O_CLOEXEC)); if (fd >= 0) { if (!android::base::WriteStringToFd(hibernationResumeDevice, fd)) { PLOG(ERROR) << "Failed to write to /sys/power/resume"; } } else { PLOG(ERROR) << "Failed to open /sys/power/resume"; } } } static std::unique_ptr<FirstStageMount> CreateFirstStageMount(const std::string& cmdline) { static std::unique_ptr<FirstStageMount> CreateFirstStageMount(const std::string& cmdline) { auto ret = FirstStageMount::Create(cmdline); auto ret = FirstStageMount::Create(cmdline); if (ret.ok()) { if (ret.ok()) { Loading Loading @@ -442,6 +459,8 @@ int FirstStageMain(int argc, char** argv) { << module_elapse_time.count() << " ms"; << module_elapse_time.count() << " ms"; } } MaybeResumeFromHibernation(bootconfig); std::unique_ptr<FirstStageMount> fsm; std::unique_ptr<FirstStageMount> fsm; bool created_devices = false; bool created_devices = false; Loading Loading
fs_mgr/libfstab/fstab_priv.h +0 −3 Original line number Original line Diff line number Diff line Loading @@ -39,9 +39,6 @@ std::string GetFstabPath(); void ImportBootconfigFromString(const std::string& bootconfig, void ImportBootconfigFromString(const std::string& bootconfig, const std::function<void(std::string, std::string)>& fn); const std::function<void(std::string, std::string)>& fn); bool GetBootconfigFromString(const std::string& bootconfig, const std::string& key, std::string* out); void ImportKernelCmdlineFromString(const std::string& cmdline, void ImportKernelCmdlineFromString(const std::string& cmdline, const std::function<void(std::string, std::string)>& fn); const std::function<void(std::string, std::string)>& fn); Loading
fs_mgr/libfstab/include/fstab/fstab.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -153,5 +153,8 @@ bool GetKernelCmdline(const std::string& key, std::string* out); // Return the "other" slot for the given slot suffix. // Return the "other" slot for the given slot suffix. std::string OtherSlotSuffix(const std::string& suffix); std::string OtherSlotSuffix(const std::string& suffix); bool GetBootconfigFromString(const std::string& bootconfig, const std::string& key, std::string* out); } // namespace fs_mgr } // namespace fs_mgr } // namespace android } // namespace android
init/first_stage_init.cpp +19 −0 Original line number Original line Diff line number Diff line Loading @@ -38,6 +38,7 @@ #include <android-base/logging.h> #include <android-base/logging.h> #include <android-base/stringprintf.h> #include <android-base/stringprintf.h> #include <android/avf_cc_flags.h> #include <android/avf_cc_flags.h> #include <fs_mgr.h> #include <modprobe/modprobe.h> #include <modprobe/modprobe.h> #include <private/android_filesystem_config.h> #include <private/android_filesystem_config.h> Loading Loading @@ -303,6 +304,22 @@ static BootMode GetBootMode(const std::string& cmdline, const std::string& bootc return BootMode::NORMAL_MODE; return BootMode::NORMAL_MODE; } } static void MaybeResumeFromHibernation(const std::string& bootconfig) { std::string hibernationResumeDevice; android::fs_mgr::GetBootconfigFromString(bootconfig, "androidboot.hibernation_resume_device", &hibernationResumeDevice); if (!hibernationResumeDevice.empty()) { android::base::unique_fd fd(open("/sys/power/resume", O_RDWR | O_CLOEXEC)); if (fd >= 0) { if (!android::base::WriteStringToFd(hibernationResumeDevice, fd)) { PLOG(ERROR) << "Failed to write to /sys/power/resume"; } } else { PLOG(ERROR) << "Failed to open /sys/power/resume"; } } } static std::unique_ptr<FirstStageMount> CreateFirstStageMount(const std::string& cmdline) { static std::unique_ptr<FirstStageMount> CreateFirstStageMount(const std::string& cmdline) { auto ret = FirstStageMount::Create(cmdline); auto ret = FirstStageMount::Create(cmdline); if (ret.ok()) { if (ret.ok()) { Loading Loading @@ -442,6 +459,8 @@ int FirstStageMain(int argc, char** argv) { << module_elapse_time.count() << " ms"; << module_elapse_time.count() << " ms"; } } MaybeResumeFromHibernation(bootconfig); std::unique_ptr<FirstStageMount> fsm; std::unique_ptr<FirstStageMount> fsm; bool created_devices = false; bool created_devices = false; Loading