diff --git a/access_token.gni b/access_token.gni index 303cfde59a7f59bcd957c06437f49a43a71ceda1..b9641e6b08e56f88693fb05729f0b0c209ed983f 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 963dbf16eabf95258f270eb69072ab265d35d99c..24e7d242dcb1a7ad10483e154eda049dc85f8746 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 74841d7b3435321faf4652e51e71262ab9cda127..263815cf5aa0da96217449a18ee0ed8651196dc6 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 a649a44497d7b02bba5eb4ed36bbd05c0a026dcd..83e7def6bb2669dea04561316c05bf17a7cd3eab 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 db421db0a97460d2b440966d527e962fb625e617..7e589270cb863b6f429cc4f0ee94c9a8c65754e3 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 89e3219e24510d32b4684ddb81b1fb52b0b9aa0f..1dcf26ef956e3f407ef85e776b067e66658b5d65 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 4e8f3079be76beee5497714f071f8f3afd9ebd61..10b888c2f2a09fe3202051c4f63b18379515d8fb 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 07348bdf7b73aa26740df1d04b98318e51fb0fd0..9a8e2dc27ea25321cdaf0b07b618ec7b943a7b9e 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 1807ddb26042c73ba5118989665bc38442b5ac0c..1fcbd5d358a96a44a636d13a5ecb36f08be3846a 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 9e61ae9cc940cd1b11124b9a4e25af6a51715443..97dd8f273efe24455f8fd1fa694434a8ce4e4545 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" ] +}