From 172c1c09d408b74305a8bc62dde35db12f404c10 Mon Sep 17 00:00:00 2001 From: bigtea Date: Wed, 11 Jun 2025 17:48:17 +0800 Subject: [PATCH] Add SetCritical for tokensync v3 Signed-off-by: bigtea --- access_token.gni | 7 +++++++ bundle.json | 1 + services/tokensyncmanager/BUILD.gn | 5 +++++ .../soft_bus_device_connection_listener.cpp | 11 +++++++++++ .../service/token_sync_manager_service.cpp | 19 +++++++++++++++++++ .../tokensyncmanager/test/coverage/BUILD.gn | 5 +++++ .../token_sync_service_coverage_test.cpp | 3 +++ .../tokensyncmanager/test/unittest/BUILD.gn | 5 +++++ .../accesstoken/access_token_service_fuzz.gni | 5 +++++ .../accesstoken/access_token_service_fuzz.gni | 5 +++++ 10 files changed, 66 insertions(+) diff --git a/access_token.gni b/access_token.gni index 303cfde59..b9641e6b0 100644 --- a/access_token.gni +++ b/access_token.gni @@ -160,3 +160,10 @@ if (!defined(global_parts_info) || } else { power_manager_enable = false } + +if (defined(global_parts_info) && + defined(global_parts_info.resourceschedule_memmgr_override)) { + memory_manager_enable = true +} else { + memory_manager_enable = false +} diff --git a/bundle.json b/bundle.json index 963dbf16e..24e7d242d 100644 --- a/bundle.json +++ b/bundle.json @@ -49,6 +49,7 @@ "init", "ipc", "json", + "memmgr", "napi", "openssl", "power_manager", diff --git a/services/tokensyncmanager/BUILD.gn b/services/tokensyncmanager/BUILD.gn index 74841d7b3..263815cf5 100644 --- a/services/tokensyncmanager/BUILD.gn +++ b/services/tokensyncmanager/BUILD.gn @@ -131,5 +131,10 @@ if (token_sync_enable == true) { cflags_cc += [ "-DTOKEN_SYNC_ENABLE" ] external_deps += [ "device_manager:devicemanagersdk" ] } + + if (memory_manager_enable == true) { + cflags_cc += [ "-DMEMORY_MANAGER_ENABLE" ] + external_deps += [ "memmgr:memmgrclient" ] + } } } diff --git a/services/tokensyncmanager/src/remote/soft_bus_device_connection_listener.cpp b/services/tokensyncmanager/src/remote/soft_bus_device_connection_listener.cpp index a649a4449..83e7def6b 100644 --- a/services/tokensyncmanager/src/remote/soft_bus_device_connection_listener.cpp +++ b/services/tokensyncmanager/src/remote/soft_bus_device_connection_listener.cpp @@ -24,6 +24,9 @@ #include "system_ability_definition.h" #include "constant_common.h" #include "dm_device_info.h" +#ifdef MEMORY_MANAGER_ENABLE +#include "mem_mgr_client.h" +#endif namespace OHOS { namespace Security { @@ -42,6 +45,10 @@ SoftBusDeviceConnectionListener::~SoftBusDeviceConnectionListener() void SoftBusDeviceConnectionListener::OnDeviceOnline(const DistributedHardware::DmDeviceInfo &info) { +#ifdef MEMORY_MANAGER_ENABLE + int32_t pid = getpid(); + Memory::MemMgrClient::GetInstance().SetCritical(pid, true, TOKEN_SYNC_MANAGER_SERVICE_ID); +#endif std::string networkId = std::string(info.networkId); std::string uuid = SoftBusManager::GetInstance().GetUniversallyUniqueIdByNodeId(networkId); std::string udid = SoftBusManager::GetInstance().GetUniqueDeviceIdByNodeId(networkId); @@ -109,6 +116,10 @@ void SoftBusDeviceConnectionListener::OnDeviceOffline(const DistributedHardware: LOGI(ATM_DOMAIN, ATM_TAG, "There is no remote decice online, exit tokensync process"); UnloadTokensyncService(); +#ifdef MEMORY_MANAGER_ENABLE + int32_t pid = getpid(); + Memory::MemMgrClient::GetInstance().SetCritical(pid, false, TOKEN_SYNC_MANAGER_SERVICE_ID); +#endif } } diff --git a/services/tokensyncmanager/src/service/token_sync_manager_service.cpp b/services/tokensyncmanager/src/service/token_sync_manager_service.cpp index db421db0a..7e589270c 100644 --- a/services/tokensyncmanager/src/service/token_sync_manager_service.cpp +++ b/services/tokensyncmanager/src/service/token_sync_manager_service.cpp @@ -24,10 +24,20 @@ #include "remote_command_manager.h" #include "soft_bus_manager.h" #include "system_ability_definition.h" +#ifdef MEMORY_MANAGER_ENABLE +#include "mem_mgr_client.h" +#endif namespace OHOS { namespace Security { namespace AccessToken { +#ifdef MEMORY_MANAGER_ENABLE +namespace { +static constexpr int32_t SA_TYPE = 1; +static constexpr int32_t SA_START = 1; +static constexpr int32_t SA_STOP = 0; +} +#endif const bool REGISTER_RESULT = SystemAbility::MakeAndRegisterAbility(DelayedSingleton::GetInstance().get()); @@ -61,6 +71,11 @@ void TokenSyncManagerService::OnStart() return; } (void)AddSystemAbilityListener(DISTRIBUTED_HARDWARE_DEVICEMANAGER_SA_ID); +#ifdef MEMORY_MANAGER_ENABLE + int32_t pid = getpid(); + Memory::MemMgrClient::GetInstance().NotifyProcessStatus(pid, SA_TYPE, SA_START, SA_ID_TOKENSYNC_MANAGER_SERVICE); + Memory::MemMgrClient::GetInstance().SetCritical(pid, true, SA_ID_TOKENSYNC_MANAGER_SERVICE); +#endif LOGI(ATM_DOMAIN, ATM_TAG, "Congratulations, TokenSyncManagerService start successfully!"); } @@ -69,6 +84,10 @@ void TokenSyncManagerService::OnStop() LOGI(ATM_DOMAIN, ATM_TAG, "Stop service"); state_ = ServiceRunningState::STATE_NOT_START; SoftBusManager::GetInstance().Destroy(); +#ifdef MEMORY_MANAGER_ENABLE + Memory::MemMgrClient::GetInstance().NotifyProcessStatus( + getpid(), SA_TYPE, SA_STOP, SA_ID_TOKENSYNC_MANAGER_SERVICE); +#endif } void TokenSyncManagerService::OnAddSystemAbility(int32_t systemAbilityId, const std::string& deviceId) diff --git a/services/tokensyncmanager/test/coverage/BUILD.gn b/services/tokensyncmanager/test/coverage/BUILD.gn index 89e3219e2..1dcf26ef9 100644 --- a/services/tokensyncmanager/test/coverage/BUILD.gn +++ b/services/tokensyncmanager/test/coverage/BUILD.gn @@ -98,4 +98,9 @@ ohos_unittest("libtoken_sync_service_coverage_test") { cflags_cc += [ "-DEVENTHANDLER_ENABLE" ] external_deps += [ "eventhandler:libeventhandler" ] } + + if (memory_manager_enable == true) { + cflags_cc += [ "-DMEMORY_MANAGER_ENABLE" ] + external_deps += [ "memmgr:memmgrclient" ] + } } diff --git a/services/tokensyncmanager/test/coverage/token_sync_service_coverage_test.cpp b/services/tokensyncmanager/test/coverage/token_sync_service_coverage_test.cpp index 4e8f3079b..10b888c2f 100644 --- a/services/tokensyncmanager/test/coverage/token_sync_service_coverage_test.cpp +++ b/services/tokensyncmanager/test/coverage/token_sync_service_coverage_test.cpp @@ -202,6 +202,9 @@ HWTEST_F(TokenSyncServiceTest, InsertCallbackAndExcute001, TestSize.Level4) { SoftBusDeviceConnectionListener listener; listener.OnDeviceOffline(g_devInfo); + DeviceInfoRepository::GetInstance().SaveDeviceInfo(g_devInfo.networkId, "123", g_devInfo.deviceId, + g_devInfo.deviceName, std::to_string(g_devInfo.deviceTypeId)); + listener.OnDeviceOffline(g_devInfo); SoftBusChannel channel("test"); std::string test("test"); channel.InsertCallback(0, test); diff --git a/services/tokensyncmanager/test/unittest/BUILD.gn b/services/tokensyncmanager/test/unittest/BUILD.gn index 07348bdf7..9a8e2dc27 100644 --- a/services/tokensyncmanager/test/unittest/BUILD.gn +++ b/services/tokensyncmanager/test/unittest/BUILD.gn @@ -97,4 +97,9 @@ ohos_unittest("libtoken_sync_service_standard_test") { cflags_cc += [ "-DEVENTHANDLER_ENABLE" ] external_deps += [ "eventhandler:libeventhandler" ] } + + if (memory_manager_enable == true) { + cflags_cc += [ "-DMEMORY_MANAGER_ENABLE" ] + external_deps += [ "memmgr:memmgrclient" ] + } } diff --git a/test/fuzztest/normalize_service/accesstoken/access_token_service_fuzz.gni b/test/fuzztest/normalize_service/accesstoken/access_token_service_fuzz.gni index 1807ddb26..1fcbd5d35 100644 --- a/test/fuzztest/normalize_service/accesstoken/access_token_service_fuzz.gni +++ b/test/fuzztest/normalize_service/accesstoken/access_token_service_fuzz.gni @@ -174,3 +174,8 @@ if (eventhandler_enable == true) { access_token_cflags_cc += [ "-DEVENTHANDLER_ENABLE" ] access_token_external_deps += [ "eventhandler:libeventhandler" ] } + +if (memory_manager_enable == true) { + access_token_cflags_cc += [ "-DMEMORY_MANAGER_ENABLE" ] + access_token_external_deps += [ "memmgr:memmgrclient" ] +} diff --git a/test/fuzztest/services/accesstoken/access_token_service_fuzz.gni b/test/fuzztest/services/accesstoken/access_token_service_fuzz.gni index 9e61ae9cc..97dd8f273 100644 --- a/test/fuzztest/services/accesstoken/access_token_service_fuzz.gni +++ b/test/fuzztest/services/accesstoken/access_token_service_fuzz.gni @@ -174,3 +174,8 @@ if (eventhandler_enable == true) { access_token_cflags_cc += [ "-DEVENTHANDLER_ENABLE" ] access_token_external_deps += [ "eventhandler:libeventhandler" ] } + +if (memory_manager_enable == true) { + access_token_cflags_cc += [ "-DMEMORY_MANAGER_ENABLE" ] + access_token_external_deps += [ "memmgr:memmgrclient" ] +} -- Gitee