From 53a520163c93138224cb649f9adf3fe205d748b7 Mon Sep 17 00:00:00 2001 From: wonghiu45 Date: Thu, 10 Aug 2023 19:18:55 +0800 Subject: [PATCH] change dataLock type to ffrt mutex category:bugfix issue:https://gitee.com/openharmony/commonlibrary_memory_utils/issues/I7SACT Signed-off-by: wonghiu45 Change-Id: Ic8961dbed0c3f94de6d48440daa9f255ceca5bc5 --- bundle.json | 3 ++- libpurgeablemem/BUILD.gn | 4 +++- libpurgeablemem/cpp/include/purgeable_mem_base.h | 3 ++- libpurgeablemem/cpp/include/purgeable_resource_manager.h | 2 +- libpurgeablemem/cpp/src/purgeable_mem_base.cpp | 2 +- libpurgeablemem/cpp/src/purgeable_resource_manager.cpp | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/bundle.json b/bundle.json index ef80698..17c1118 100644 --- a/bundle.json +++ b/bundle.json @@ -24,7 +24,8 @@ "hitrace", "init", "ipc", - "image_framework" + "image_framework", + "ffrt" ], "third_party": [] }, diff --git a/libpurgeablemem/BUILD.gn b/libpurgeablemem/BUILD.gn index b1e7b5f..c6c3e7a 100644 --- a/libpurgeablemem/BUILD.gn +++ b/libpurgeablemem/BUILD.gn @@ -16,10 +16,12 @@ import("//build/ohos/ndk/ndk.gni") config("libpurgeable_config") { include_dirs = [ + "include", "c/include", "common/include", "cpp/include", "interfaces/kits/c", + "//foundation/resourceschedule/ffrt/interfaces/kits/", ] cflags_cc = [ "-fexceptions" ] } @@ -38,9 +40,9 @@ ohos_shared_library("libpurgeablemem") { "cpp/src/purgeable_resource_manager.cpp", "cpp/src/ux_page_table.cpp", ] - include_dirs = [ "include" ] external_deps = [ "c_utils:utils", + "ffrt:libffrt", "hilog:libhilog", "hitrace:hitrace_meter", "init:libbegetutil", diff --git a/libpurgeablemem/cpp/include/purgeable_mem_base.h b/libpurgeablemem/cpp/include/purgeable_mem_base.h index e66727e..f16187b 100644 --- a/libpurgeablemem/cpp/include/purgeable_mem_base.h +++ b/libpurgeablemem/cpp/include/purgeable_mem_base.h @@ -23,6 +23,7 @@ #include "purgeable_mem_builder.h" #include "purgeable_resource_manager.h" #include "ux_page_table.h" +#include "ffrt.h" namespace OHOS { namespace PurgeableMem { @@ -106,7 +107,7 @@ public: protected: void *dataPtr_ = nullptr; - std::mutex dataLock_; + ffrt::mutex dataLock_; bool isDataValid_ {true}; size_t dataSizeInput_ = 0; std::unique_ptr builder_ = nullptr; diff --git a/libpurgeablemem/cpp/include/purgeable_resource_manager.h b/libpurgeablemem/cpp/include/purgeable_resource_manager.h index 9587ac1..d9ae622 100644 --- a/libpurgeablemem/cpp/include/purgeable_resource_manager.h +++ b/libpurgeablemem/cpp/include/purgeable_resource_manager.h @@ -22,7 +22,7 @@ #include #include "thread_pool.h" - +#include "ffrt.h" namespace OHOS { namespace PurgeableMem { const std::string THREAD_POOL_NAME = "PurgeThread"; diff --git a/libpurgeablemem/cpp/src/purgeable_mem_base.cpp b/libpurgeablemem/cpp/src/purgeable_mem_base.cpp index 20f39af..8b4fe8e 100644 --- a/libpurgeablemem/cpp/src/purgeable_mem_base.cpp +++ b/libpurgeablemem/cpp/src/purgeable_mem_base.cpp @@ -163,7 +163,7 @@ bool PurgeableMemBase::BeginReadWithDataLock() return false; } - std::lock_guard lock(dataLock_); + std::lock_guard lock(dataLock_); if (!isDataValid_) { return false; } diff --git a/libpurgeablemem/cpp/src/purgeable_resource_manager.cpp b/libpurgeablemem/cpp/src/purgeable_resource_manager.cpp index aefec6c..a962642 100644 --- a/libpurgeablemem/cpp/src/purgeable_resource_manager.cpp +++ b/libpurgeablemem/cpp/src/purgeable_resource_manager.cpp @@ -218,7 +218,7 @@ void PurgeableResourceManager::EndAccessPurgeableMem() void PurgeableResourceManager::ChangeDataValid(std::shared_ptr resourcePtr, bool isVaild) const { StartTrace(HITRACE_TAG_ZIMAGE, "OHOS::PurgeableMem::PurgeableResourceManager::ChangeDataValid"); - std::lock_guard dataLock(resourcePtr->dataLock_); + std::lock_guard dataLock(resourcePtr->dataLock_); resourcePtr->SetDataValid(isVaild); if (!isVaild && resourcePtr->GetPinStatus() == 0) { resourcePtr->Pin(); -- Gitee