diff --git a/qos/BUILD.gn b/qos/BUILD.gn index c7906838423de1c3ebec18b4efa6b8cdf40989ae..b6ee0666967b41582fd6f1eb98162c606b1f2b6c 100644 --- a/qos/BUILD.gn +++ b/qos/BUILD.gn @@ -41,7 +41,10 @@ ohos_shared_library("qos") { defines = [ "QOS_EXT_ENABLE" ] } - external_deps = [ "hilog:libhilog" ] + external_deps = [ + "hilog:libhilog", + "init:libbegetutil", + ] subsystem_name = "resourceschedule" part_name = "qos_manager" diff --git a/qos/qos.cpp b/qos/qos.cpp index 924f686590adb96aecdf68efd893669a99096b02..b6c5362974592ed6dbc8d5bb97847d1542d93f2f 100644 --- a/qos/qos.cpp +++ b/qos/qos.cpp @@ -16,6 +16,7 @@ #include #include #include "concurrent_task_log.h" +#include "parameters.h" #include "qos_interface.h" #include "qos.h" using namespace OHOS::ConcurrentTask; @@ -32,7 +33,12 @@ QosController& QosController::GetInstance() int QosController::SetThreadQosForOtherThread(enum QosLevel level, int tid) { + bool qosEnable = OHOS::system::GetBoolParameter("persist.all.setQos.on", true); int qos = static_cast(level); + if (!qosEnable) { + CONCUR_LOGD("[Qos] qoslevel %{public}d apply for tid %{public}d disable", qos, tid); + return 0; + } if (level < QosLevel::QOS_BACKGROUND || level >= QosLevel::QOS_MAX) { CONCUR_LOGE("[Qos] invalid qos level %{public}d", qos); return ERROR_NUM; @@ -49,6 +55,11 @@ int QosController::SetThreadQosForOtherThread(enum QosLevel level, int tid) int QosController::ResetThreadQosForOtherThread(int tid) { + bool qosEnable = OHOS::system::GetBoolParameter("persist.all.setQos.on", true); + if (!qosEnable) { + CONCUR_LOGD("[Qos] qoslevel reset disable for tid %{public}d.", tid); + return 0; + } int ret = QosLeaveForOther(tid); if (ret == 0) { CONCUR_LOGD("[Qos] qoslevel reset for tid %{public}d success", tid);