From cc1cceaf3c69db51078e6643253f16f6294b03d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=8F=8B=E6=9D=BE?= Date: Sat, 7 Sep 2024 09:47:34 +0800 Subject: [PATCH 1/4] =?UTF-8?q?hidumper=E6=8E=A5=E5=8F=A3=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20Signed-off-by:=20=E9=82=B9=E5=8F=8B=E6=9D=BE=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modulemgr/include/module_manager.h | 6 +++++ .../modulemgr/include/update_service_module.h | 2 ++ .../modulemgr/src/module_manager.cpp | 23 +++++++++++++++++++ .../modulemgr/src/update_service_module.cpp | 5 ++++ services/engine/src/update_service.cpp | 16 ++----------- 5 files changed, 38 insertions(+), 14 deletions(-) diff --git a/interfaces/inner_api/modulemgr/include/module_manager.h b/interfaces/inner_api/modulemgr/include/module_manager.h index 6112a97f..d39c0c3b 100644 --- a/interfaces/inner_api/modulemgr/include/module_manager.h +++ b/interfaces/inner_api/modulemgr/include/module_manager.h @@ -45,6 +45,9 @@ public: void HandleOnStartOnStopFunc(std::string phase, const OHOS::SystemAbilityOnDemandReason &reason); void HookOnIdleFunc(std::string phase, LifeCycleFuncReturnType handleSAOnIdle); int32_t HandleOnIdleFunc(std::string phase, const OHOS::SystemAbilityOnDemandReason &reason); + void HookDumpFunc(std::string phase, LifeCycleFuncDumpType handleSADump); + int HandleDumpFunc(std::string phase, int fd, const std::vector &args); + bool IsMapFuncExist(uint32_t code); private: @@ -53,10 +56,13 @@ private: static std::map onStartOnStopFuncMap_; static std::map onIdleFuncMap_; static std::map onRemoteRequestFuncMap_; + static std::map onDumpFuncMap_; + static bool isLoaded; static std::mutex onRemoteRequestFuncMapMutex_; static std::mutex onStartOnStopFuncMapMutex_; static std::mutex onIdleFuncMapMutex_; + static std::mutex onDumpFuncMapMutex_; }; } // namespace UpdateEngine } // namespace OHOS diff --git a/interfaces/inner_api/modulemgr/include/update_service_module.h b/interfaces/inner_api/modulemgr/include/update_service_module.h index 4467ea8e..443e5466 100644 --- a/interfaces/inner_api/modulemgr/include/update_service_module.h +++ b/interfaces/inner_api/modulemgr/include/update_service_module.h @@ -37,11 +37,13 @@ using RequestFuncType = int32_t (*)(uint32_t code, using LifeCycleFuncType = void (*)(const OHOS::SystemAbilityOnDemandReason &reason); using LifeCycleFuncReturnType = int32_t (*)(const OHOS::SystemAbilityOnDemandReason &reason); +using LifeCycleFuncDumpType = int (*)(int fd, const std::vector &args); void RegisterFunc(std::vector codes, RequestFuncType handleRemoteRequest); void RegisterOnStartOnStopFunc(std::string phase, LifeCycleFuncType handlePhase); void RegisterOnIdleFunc(std::string phase, LifeCycleFuncReturnType handlePhase); +void RegisterDumpFunc(std::string phase, LifeCycleFuncDumpType handlePhase); #ifdef __cplusplus #if __cplusplus diff --git a/interfaces/inner_api/modulemgr/src/module_manager.cpp b/interfaces/inner_api/modulemgr/src/module_manager.cpp index ad4736b0..76a1bffe 100644 --- a/interfaces/inner_api/modulemgr/src/module_manager.cpp +++ b/interfaces/inner_api/modulemgr/src/module_manager.cpp @@ -152,6 +152,29 @@ int32_t ModuleManager::HandleOnIdleFunc(std::string phase, const OHOS::SystemAbi return 0; } +void ModuleManager::HookDumpFunc(std::string phase, LifeCycleFuncDumpType handleSADump) +{ + std::lock_guard guard(onDumpFuncMapMutex_); + if (onDumpFuncMap_.find(phase) == onDumpFuncMap_.end()) { + UTILS_LOGI("add phase %{public}s", phase.c_str()); + onDumpFuncMap_.insert(std::make_pair(phase, handleSADump)); + } else { + UTILS_LOGI("phase %{public}s already exist", phase.c_str()); + onDumpFuncMap_[phase] = handleSADump; + } +} + +int ModuleManager::HandleDumpFunc(std::string phase, int fd, const std::vector &args) +{ + if (onDumpFuncMap_.find(phase) == onDumpFuncMap_.end()) { + UTILS_LOGI("phase %{public}s not exist", phase.c_str()); + } else { + UTILS_LOGI("phase %{public}s already exist", phase.c_str()); + return ((LifeCycleFuncDumpType)onDumpFuncMap_[phase])(fd, args); + } + return 0; +} + bool ModuleManager::IsMapFuncExist(uint32_t code) { return onRemoteRequestFuncMap_.count(code); diff --git a/interfaces/inner_api/modulemgr/src/update_service_module.cpp b/interfaces/inner_api/modulemgr/src/update_service_module.cpp index 47c76c76..83dd66f5 100644 --- a/interfaces/inner_api/modulemgr/src/update_service_module.cpp +++ b/interfaces/inner_api/modulemgr/src/update_service_module.cpp @@ -36,5 +36,10 @@ void RegisterOnIdleFunc(std::string phase, LifeCycleFuncReturnType handlePhase) { OHOS::UpdateEngine::ModuleManager::GetInstance().HookOnIdleFunc(phase, handlePhase); } + +void RegisterDumpFunc(std::string phase, LifeCycleFuncDumpType handlePhase) +{ + OHOS::UpdateEngine::ModuleManager::GetInstance().HookDumpFunc(phase, handlePhase); +} } // namespace UpdateEngine } // namespace OHOS \ No newline at end of file diff --git a/services/engine/src/update_service.cpp b/services/engine/src/update_service.cpp index b31582aa..5705b9b5 100644 --- a/services/engine/src/update_service.cpp +++ b/services/engine/src/update_service.cpp @@ -405,20 +405,8 @@ void UpdateService::DumpUpgradeCallback(const int fd) int UpdateService::Dump(int fd, const std::vector &args) { - if (fd < 0) { - ENGINE_LOGI("HiDumper handle invalid"); - return -1; - } - - if (args.size() == 0) { - UpgradeInfo upgradeInfo = UpdateServiceCache::GetUpgradeInfo(BusinessSubType::FIRMWARE); - BuildUpgradeInfoDump(fd, upgradeInfo); - BuildTaskInfoDump(fd); - DumpUpgradeCallback(fd); - } else { - dprintf(fd, "input error, no parameters required\n"); - } - return 0; + ENGINE_LOGI("UpdaterService Dump"); + return ModuleManager::GetInstance().HandleDumpFunc("Dump", fd, args); } void UpdateService::OnStart(const SystemAbilityOnDemandReason &startReason) -- Gitee From 4802245bf15ea577eb36b24e2eb0eec034d3bab2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=8F=8B=E6=9D=BE?= Date: Sat, 7 Sep 2024 03:27:30 +0000 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 邹友松 --- interfaces/inner_api/modulemgr/src/module_manager.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interfaces/inner_api/modulemgr/src/module_manager.cpp b/interfaces/inner_api/modulemgr/src/module_manager.cpp index 76a1bffe..99d0e801 100644 --- a/interfaces/inner_api/modulemgr/src/module_manager.cpp +++ b/interfaces/inner_api/modulemgr/src/module_manager.cpp @@ -26,9 +26,11 @@ namespace UpdateEngine { std::map ModuleManager::onRemoteRequestFuncMap_; std::map ModuleManager::onStartOnStopFuncMap_; std::map ModuleManager::onIdleFuncMap_; +std::map ModuleManager::onDumpFuncMap_; std::mutex ModuleManager::onRemoteRequestFuncMapMutex_; std::mutex ModuleManager::onStartOnStopFuncMapMutex_; std::mutex ModuleManager::onIdleFuncMapMutex_; +std::mutex ModuleManager::onDumpFuncMapMutex_; bool ModuleManager::isLoaded = false; -- Gitee From 8f93ed7f0ae4d0f319ab79198a0b4102b60a36d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=8F=8B=E6=9D=BE?= Date: Mon, 9 Sep 2024 03:12:31 +0000 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9dump=EF=BC=8C=E4=BF=9D?= =?UTF-8?q?=E7=95=99=E8=93=9D=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 邹友松 --- services/engine/src/update_service.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/services/engine/src/update_service.cpp b/services/engine/src/update_service.cpp index 5705b9b5..7b2dd0ee 100644 --- a/services/engine/src/update_service.cpp +++ b/services/engine/src/update_service.cpp @@ -405,8 +405,24 @@ void UpdateService::DumpUpgradeCallback(const int fd) int UpdateService::Dump(int fd, const std::vector &args) { - ENGINE_LOGI("UpdaterService Dump"); - return ModuleManager::GetInstance().HandleDumpFunc("Dump", fd, args); + if (!ModuleManager::GetInstance().IsModuleLoaded()) { + if (fd < 0) { + ENGINE_LOGI("HiDumper handle invalid"); + return -1; + } + + if (args.size() == 0) { + UpgradeInfo upgradeInfo = UpdateServiceCache::GetUpgradeInfo(BusinessSubType::FIRMWARE); + BuildUpgradeInfoDump(fd, upgradeInfo); + BuildTaskInfoDump(fd); + DumpUpgradeCallback(fd); + } else { + dprintf(fd, "input error, no parameters required\n"); + } + return 0; + } else { + return ModuleManager::GetInstance().HandleDumpFunc("Dump", fd, args); + } } void UpdateService::OnStart(const SystemAbilityOnDemandReason &startReason) -- Gitee From 0bdc0e0db3f4f188091ce5c0674b512cb8fbd8fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=8F=8B=E6=9D=BE?= Date: Wed, 11 Sep 2024 06:04:13 +0000 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E7=9A=84json=E8=A7=A3=E6=9E=90=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 邹友松 --- services/firmware/upgrade/flow/src/firmware_manager.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/services/firmware/upgrade/flow/src/firmware_manager.cpp b/services/firmware/upgrade/flow/src/firmware_manager.cpp index 62399964..374c65de 100644 --- a/services/firmware/upgrade/flow/src/firmware_manager.cpp +++ b/services/firmware/upgrade/flow/src/firmware_manager.cpp @@ -409,6 +409,7 @@ void FirmwareManager::HandleBootUpdateFail(const FirmwareTask &task, versionComponent.upgradeAction = UpgradeAction::UPGRADE; versionComponent.displayVersion = component.targetBlDisplayVersionNumber; versionComponent.innerVersion = component.targetBlVersionNumber; + versionComponent.componentExtra = JsonBuilder().Append("{}").ToJson(); versionComponents.push_back(versionComponent); } -- Gitee