From abfbe88b4ac383ddba6b896fd90a30de87fcab24 Mon Sep 17 00:00:00 2001 From: guozejun Date: Sun, 26 Sep 2021 15:33:57 +0800 Subject: [PATCH] Optimiz libace.z.so load process Signed-off-by: guozejun Change-Id: I310839f254b2e905e289a53834deef9e9af66e61 --- include/appspawn_server.h | 7 +++++++ src/appspawn_server.cpp | 25 ++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/include/appspawn_server.h b/include/appspawn_server.h index c73cf79f..b210bc59 100644 --- a/include/appspawn_server.h +++ b/include/appspawn_server.h @@ -143,6 +143,13 @@ private: */ bool CheckAppProperty(const ClientSocket::AppProperty *appProperty); +#ifdef ACEABILITY_LIBRARY_LOADER + /** + * Load libace.z.so library when boot the devices + */ + void LoadAceLib(); +#endif + private: const std::string deviceNull_ = "/dev/null"; std::string socketName_ {}; diff --git a/src/appspawn_server.cpp b/src/appspawn_server.cpp index c5071b05..e5d0ee5e 100644 --- a/src/appspawn_server.cpp +++ b/src/appspawn_server.cpp @@ -28,6 +28,11 @@ #include "main_thread.h" #include "securec.h" +#if defined(ABILITY_LIBRARY_LOADER) || defined(APPLICATION_LIBRARY_LOADER) +#include +#include +#endif + #define GRAPHIC_PERMISSION_CHECK namespace OHOS { @@ -147,6 +152,22 @@ void AppSpawnServer::ConnectionPeer() } } +#ifdef ACEABILITY_LIBRARY_LOADER +void AppSpawnServer::LoadAceLib() +{ + std::string acelibdir("/system/lib/libace.z.so"); + void *AceAbilityLib = nullptr; + HiLog::Info(LABEL, "MainThread::LoadAbilityLibrary. Start calling dlopen acelibdir."); + AceAbilityLib = dlopen(acelibdir.c_str(), RTLD_NOW | RTLD_GLOBAL); + if (AceAbilityLib == nullptr) { + HiLog::Error(LABEL, "Fail to dlopen %{public}s, [%{public}s]", acelibdir.c_str(), dlerror()); + } else { + HiLog::Info(LABEL, "Success to dlopen %{public}s", acelibdir.c_str()); + } + HiLog::Info(LABEL, "MainThread::LoadAbilityLibrary. End calling dlopen."); +} +#endif + bool AppSpawnServer::ServerMain(char *longProcName, int64_t longProcNameLen) { if (socket_->RegisterServerSocket() != 0) { @@ -154,7 +175,9 @@ bool AppSpawnServer::ServerMain(char *longProcName, int64_t longProcNameLen) return false; } std::thread(&AppSpawnServer::ConnectionPeer, this).detach(); - +#ifdef ACEABILITY_LIBRARY_LOADER + LoadAceLib(); +#endif while (isRunning_) { std::unique_lock lock(mut_); dataCond_.wait(lock, [this] { return !this->appQueue_.empty(); }); -- Gitee