From 93ae82ad36b61f6b3ee67b27ddfc601fe1fb949d Mon Sep 17 00:00:00 2001 From: liuyuxiu Date: Fri, 20 Oct 2023 14:27:04 +0800 Subject: [PATCH 1/4] Feature Signed-off-by: liuyuxiu --- .../include/concurrent_task_service_stub.h | 3 + services/src/concurrent_task_service_stub.cpp | 59 +++++++++++- .../concurrent_fuzzer/concurrent_fuzzer.cpp | 94 +++++++++++++++++++ 3 files changed, 155 insertions(+), 1 deletion(-) diff --git a/services/include/concurrent_task_service_stub.h b/services/include/concurrent_task_service_stub.h index 022d5d8..f6d5aca 100644 --- a/services/include/concurrent_task_service_stub.h +++ b/services/include/concurrent_task_service_stub.h @@ -32,6 +32,9 @@ public: private: int32_t ReportDataInner(MessageParcel& data, MessageParcel& reply); int32_t QueryIntervalInner(MessageParcel& data, MessageParcel& reply); + int32_t SetThreadQosInner(MessageParcel& data, MessageParcel& reply); + int32_t SetQosForOtherThreadInner(MessageParcel& data, MessageParcel& reply); + int32_t ResetQosForOtherThreadInner(MessageParcel& data, MessageParcel& reply); Json::Value StringToJson(const std::string& str); void Init(); diff --git a/services/src/concurrent_task_service_stub.cpp b/services/src/concurrent_task_service_stub.cpp index 2e8dacc..641491b 100644 --- a/services/src/concurrent_task_service_stub.cpp +++ b/services/src/concurrent_task_service_stub.cpp @@ -18,7 +18,7 @@ #include "concurrent_task_errors.h" #include "string_ex.h" #include "ipc_skeleton.h" - +#include "qos.h" namespace OHOS { namespace ConcurrentTask { namespace { @@ -84,6 +84,57 @@ int32_t ConcurrentTaskServiceStub::QueryIntervalInner(MessageParcel& data, [[may return ERR_OK; } +int32_t ConcurrentTaskServiceStub::SetThreadQosInner(MessageParcel& data, [[maybe_unused]] MessageParcel& reply) +{ + if (!IsValidToken(data)) { + return ERR_CONCURRENT_TASK_PARCEL_ERROR; + } + int level = 0; + enum Qos_Level T ; + if (!data.ReadInt32(level) ) { + CONCUR_LOGE("Read info failed in QueryInterval Stub"); + return IPC_STUB_ERR; + } + level = level % 5; + level = level < 0 ? (-1) * level : level; + T = Qos_Level(level); + SetRemoteQos(T); + return ERR_OK; +} + +int32_t ConcurrentTaskServiceStub::SetQosForOtherThreadInner(MessageParcel& data, [[maybe_unused]] MessageParcel& reply) +{ + if (!IsValidToken(data)) { + return ERR_CONCURRENT_TASK_PARCEL_ERROR; + } + int level = 0; + int tid = -1; + enum Qos_Level T ; + if (!data.ReadInt32(tid) || !data.ReadInt32(level)) { + CONCUR_LOGE("Read info failed in QueryInterval Stub"); + return IPC_STUB_ERR; + } + level = level % 5; + level = level < 0 ? (-1) * level : level; + T = Qos_Level(level); + SetQosForOtherThread(T, tid); + return ERR_OK; +} + +int32_t ConcurrentTaskServiceStub::ResetQosForOtherThreadInner(MessageParcel& data, [[maybe_unused]] MessageParcel& reply) +{ + if (!IsValidToken(data)) { + return ERR_CONCURRENT_TASK_PARCEL_ERROR; + } + int tid = -1; + if (!data.ReadInt32(tid)) { + CONCUR_LOGE("Read info failed in QueryInterval Stub"); + return IPC_STUB_ERR; + } + ResetQosForOtherThread(tid); + return ERR_OK; +} + int32_t ConcurrentTaskServiceStub::OnRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option) { @@ -132,6 +183,12 @@ void ConcurrentTaskServiceStub::Init() [this](auto& data, auto& reply) {return ReportDataInner(data, reply); } }, { static_cast(ConcurrentTaskInterfaceCode::QUERY_INTERVAL), [this](auto& data, auto& reply) {return QueryIntervalInner(data, reply); } }, + { static_cast(ConcurrentTaskInterfaceCode::SET_THREAD_QOS), + [this](auto& data, auto& reply) {return SetThreadQosInner(data, reply); } }, + { static_cast(ConcurrentTaskInterfaceCode::SET_QOS_FOR_OTHER_THREAD), + [this](auto& data, auto& reply) {return SetQosForOtherThreadInner(data, reply); } }, + { static_cast(ConcurrentTaskInterfaceCode::RESET_QOS_FOR_OTHER_THREAD), + [this](auto& data, auto& reply) {return ResetQosForOtherThreadInner(data, reply); } }, }; } } // namespace ResourceSchedule diff --git a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp index c5d113e..1eafce0 100644 --- a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp +++ b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp @@ -102,6 +102,100 @@ bool FuzzConcurrentTaskServiceQueryInterval(const uint8_t* data, size_t size) } return true; } + +bool FuzzConcurrentTaskServiceStopRemoteObject(const uint8_t* data, size_t size) +{ + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + if (size > sizeof(int) + sizeof(int)) { + StopRemoteObject(); + } + return true; +} + +bool FuzzConcurrentTaskServiceSetThreadQos(const uint8_t* data, size_t size) +{ + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + if (size > sizeof(int) + sizeof(int)) { + MessageParcel data1; + Parcel parcel; + sptr iremoteobject = IRemoteObject::Unmarshalling(parcel); + int intdata = GetData(); + void *voiddata = &intdata; + size_t size1 = sizeof(int); + data1.WriteRemoteObject(iremoteobject); + data1.WriteRawData(voiddata, size1); + data1.ReadRawData(size1); + MessageParcel reply; + MessageOption option; + uint32_t code = static_cast(ConcurrentTaskInterfaceCode::SET_THREAD_QOS); + ConcurrentTaskService s = ConcurrentTaskService(); + s.OnRemoteRequest(code, data1, reply, option); + } + return true; +} + +bool FuzzConcurrentTaskServiceSetQosForOtherThread(const uint8_t* data, size_t size) +{ + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + if (size > sizeof(int) + sizeof(int)) { + MessageParcel data1; + Parcel parcel; + sptr iremoteobject = IRemoteObject::Unmarshalling(parcel); + int intdata = GetData(); + void *voiddata = &intdata; + size_t size1 = sizeof(int); + data1.WriteRemoteObject(iremoteobject); + data1.WriteRawData(voiddata, size1); + data1.ReadRawData(size1); + MessageParcel reply; + MessageOption option; + uint32_t code = static_cast(ConcurrentTaskInterfaceCode::SET_QOS_FOR_OTHER_THREAD); + ConcurrentTaskService s = ConcurrentTaskService(); + s.OnRemoteRequest(code, data1, reply, option); + } + return true; +} + +bool FuzzConcurrentTaskServiceResetThreadQos(const uint8_t* data, size_t size) +{ + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + if (size > sizeof(int) + sizeof(int)) { + ResetThreadQos(); + } + return true; +} + +bool FuzzConcurrentTaskServiceResetQosForOtherThread(const uint8_t* data, size_t size) +{ + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + if (size > sizeof(int) + sizeof(int)) { + MessageParcel data1; + Parcel parcel; + sptr iremoteobject = IRemoteObject::Unmarshalling(parcel); + int intdata = GetData(); + void *voiddata = &intdata; + size_t size1 = sizeof(int); + data1.WriteRemoteObject(iremoteobject); + data1.WriteRawData(voiddata, size1); + data1.ReadRawData(size1); + MessageParcel reply; + MessageOption option; + uint32_t code = static_cast(ConcurrentTaskInterfaceCode::RESET_QOS_FOR_OTHER_THREAD); + ConcurrentTaskService s = ConcurrentTaskService(); + s.OnRemoteRequest(code, data1, reply, option); + } + return true; +} } // namespace OHOS /* Fuzzer entry point */ -- Gitee From 3a3c7613ac2a54a988ee96e2a60cea0ff6abace4 Mon Sep 17 00:00:00 2001 From: liuyuxiu Date: Fri, 20 Oct 2023 17:19:23 +0800 Subject: [PATCH 2/4] Feature Signed-off-by: liuyuxiu --- .../include/concurrent_task_service_stub.h | 3 - services/src/concurrent_task_service_stub.cpp | 57 ---------------- .../concurrent_fuzzer/concurrent_fuzzer.cpp | 65 +++++-------------- 3 files changed, 17 insertions(+), 108 deletions(-) diff --git a/services/include/concurrent_task_service_stub.h b/services/include/concurrent_task_service_stub.h index f6d5aca..022d5d8 100644 --- a/services/include/concurrent_task_service_stub.h +++ b/services/include/concurrent_task_service_stub.h @@ -32,9 +32,6 @@ public: private: int32_t ReportDataInner(MessageParcel& data, MessageParcel& reply); int32_t QueryIntervalInner(MessageParcel& data, MessageParcel& reply); - int32_t SetThreadQosInner(MessageParcel& data, MessageParcel& reply); - int32_t SetQosForOtherThreadInner(MessageParcel& data, MessageParcel& reply); - int32_t ResetQosForOtherThreadInner(MessageParcel& data, MessageParcel& reply); Json::Value StringToJson(const std::string& str); void Init(); diff --git a/services/src/concurrent_task_service_stub.cpp b/services/src/concurrent_task_service_stub.cpp index 641491b..bb4713e 100644 --- a/services/src/concurrent_task_service_stub.cpp +++ b/services/src/concurrent_task_service_stub.cpp @@ -84,57 +84,6 @@ int32_t ConcurrentTaskServiceStub::QueryIntervalInner(MessageParcel& data, [[may return ERR_OK; } -int32_t ConcurrentTaskServiceStub::SetThreadQosInner(MessageParcel& data, [[maybe_unused]] MessageParcel& reply) -{ - if (!IsValidToken(data)) { - return ERR_CONCURRENT_TASK_PARCEL_ERROR; - } - int level = 0; - enum Qos_Level T ; - if (!data.ReadInt32(level) ) { - CONCUR_LOGE("Read info failed in QueryInterval Stub"); - return IPC_STUB_ERR; - } - level = level % 5; - level = level < 0 ? (-1) * level : level; - T = Qos_Level(level); - SetRemoteQos(T); - return ERR_OK; -} - -int32_t ConcurrentTaskServiceStub::SetQosForOtherThreadInner(MessageParcel& data, [[maybe_unused]] MessageParcel& reply) -{ - if (!IsValidToken(data)) { - return ERR_CONCURRENT_TASK_PARCEL_ERROR; - } - int level = 0; - int tid = -1; - enum Qos_Level T ; - if (!data.ReadInt32(tid) || !data.ReadInt32(level)) { - CONCUR_LOGE("Read info failed in QueryInterval Stub"); - return IPC_STUB_ERR; - } - level = level % 5; - level = level < 0 ? (-1) * level : level; - T = Qos_Level(level); - SetQosForOtherThread(T, tid); - return ERR_OK; -} - -int32_t ConcurrentTaskServiceStub::ResetQosForOtherThreadInner(MessageParcel& data, [[maybe_unused]] MessageParcel& reply) -{ - if (!IsValidToken(data)) { - return ERR_CONCURRENT_TASK_PARCEL_ERROR; - } - int tid = -1; - if (!data.ReadInt32(tid)) { - CONCUR_LOGE("Read info failed in QueryInterval Stub"); - return IPC_STUB_ERR; - } - ResetQosForOtherThread(tid); - return ERR_OK; -} - int32_t ConcurrentTaskServiceStub::OnRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option) { @@ -183,12 +132,6 @@ void ConcurrentTaskServiceStub::Init() [this](auto& data, auto& reply) {return ReportDataInner(data, reply); } }, { static_cast(ConcurrentTaskInterfaceCode::QUERY_INTERVAL), [this](auto& data, auto& reply) {return QueryIntervalInner(data, reply); } }, - { static_cast(ConcurrentTaskInterfaceCode::SET_THREAD_QOS), - [this](auto& data, auto& reply) {return SetThreadQosInner(data, reply); } }, - { static_cast(ConcurrentTaskInterfaceCode::SET_QOS_FOR_OTHER_THREAD), - [this](auto& data, auto& reply) {return SetQosForOtherThreadInner(data, reply); } }, - { static_cast(ConcurrentTaskInterfaceCode::RESET_QOS_FOR_OTHER_THREAD), - [this](auto& data, auto& reply) {return ResetQosForOtherThreadInner(data, reply); } }, }; } } // namespace ResourceSchedule diff --git a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp index 1eafce0..d713efe 100644 --- a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp +++ b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp @@ -108,9 +108,7 @@ bool FuzzConcurrentTaskServiceStopRemoteObject(const uint8_t* data, size_t size) g_baseFuzzData = data; g_baseFuzzSize = size; g_baseFuzzPos = 0; - if (size > sizeof(int) + sizeof(int)) { - StopRemoteObject(); - } + StopRemoteObject(); return true; } @@ -120,20 +118,12 @@ bool FuzzConcurrentTaskServiceSetThreadQos(const uint8_t* data, size_t size) g_baseFuzzSize = size; g_baseFuzzPos = 0; if (size > sizeof(int) + sizeof(int)) { - MessageParcel data1; - Parcel parcel; - sptr iremoteobject = IRemoteObject::Unmarshalling(parcel); - int intdata = GetData(); - void *voiddata = &intdata; - size_t size1 = sizeof(int); - data1.WriteRemoteObject(iremoteobject); - data1.WriteRawData(voiddata, size1); - data1.ReadRawData(size1); - MessageParcel reply; - MessageOption option; - uint32_t code = static_cast(ConcurrentTaskInterfaceCode::SET_THREAD_QOS); - ConcurrentTaskService s = ConcurrentTaskService(); - s.OnRemoteRequest(code, data1, reply, option); + int level = GetData(); + level = level % 5; + level = level < 0 ? (-1) * level : level; + enum Qos_Level T ; + T = Qos_Level(level); + SetThreadQos } return true; } @@ -144,20 +134,13 @@ bool FuzzConcurrentTaskServiceSetQosForOtherThread(const uint8_t* data, size_t s g_baseFuzzSize = size; g_baseFuzzPos = 0; if (size > sizeof(int) + sizeof(int)) { - MessageParcel data1; - Parcel parcel; - sptr iremoteobject = IRemoteObject::Unmarshalling(parcel); - int intdata = GetData(); - void *voiddata = &intdata; - size_t size1 = sizeof(int); - data1.WriteRemoteObject(iremoteobject); - data1.WriteRawData(voiddata, size1); - data1.ReadRawData(size1); - MessageParcel reply; - MessageOption option; - uint32_t code = static_cast(ConcurrentTaskInterfaceCode::SET_QOS_FOR_OTHER_THREAD); - ConcurrentTaskService s = ConcurrentTaskService(); - s.OnRemoteRequest(code, data1, reply, option); + int level = GetData(); + int tid = GetData(); + enum Qos_Level T ; + level = level % 5; + level = level < 0 ? (-1) * level : level; + T = Qos_Level(level); + SetQosForOtherThread(T, tid); } return true; } @@ -167,9 +150,7 @@ bool FuzzConcurrentTaskServiceResetThreadQos(const uint8_t* data, size_t size) g_baseFuzzData = data; g_baseFuzzSize = size; g_baseFuzzPos = 0; - if (size > sizeof(int) + sizeof(int)) { - ResetThreadQos(); - } + ResetThreadQos(); return true; } @@ -179,20 +160,8 @@ bool FuzzConcurrentTaskServiceResetQosForOtherThread(const uint8_t* data, size_t g_baseFuzzSize = size; g_baseFuzzPos = 0; if (size > sizeof(int) + sizeof(int)) { - MessageParcel data1; - Parcel parcel; - sptr iremoteobject = IRemoteObject::Unmarshalling(parcel); - int intdata = GetData(); - void *voiddata = &intdata; - size_t size1 = sizeof(int); - data1.WriteRemoteObject(iremoteobject); - data1.WriteRawData(voiddata, size1); - data1.ReadRawData(size1); - MessageParcel reply; - MessageOption option; - uint32_t code = static_cast(ConcurrentTaskInterfaceCode::RESET_QOS_FOR_OTHER_THREAD); - ConcurrentTaskService s = ConcurrentTaskService(); - s.OnRemoteRequest(code, data1, reply, option); + int tid = GetData(); + ResetQosForOtherThread(tid); } return true; } -- Gitee From 52dadec21589e435ecb8f8c7e0fda31a24e93589 Mon Sep 17 00:00:00 2001 From: liuyuxiu Date: Tue, 24 Oct 2023 10:06:39 +0800 Subject: [PATCH 3/4] feature Signed-off-by: liuyuxiu --- .../concurrent_fuzzer/concurrent_fuzzer.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp index d713efe..ed9d704 100644 --- a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp +++ b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp @@ -108,7 +108,7 @@ bool FuzzConcurrentTaskServiceStopRemoteObject(const uint8_t* data, size_t size) g_baseFuzzData = data; g_baseFuzzSize = size; g_baseFuzzPos = 0; - StopRemoteObject(); + QOS::StopRemoteObject(); return true; } @@ -121,9 +121,9 @@ bool FuzzConcurrentTaskServiceSetThreadQos(const uint8_t* data, size_t size) int level = GetData(); level = level % 5; level = level < 0 ? (-1) * level : level; - enum Qos_Level T ; - T = Qos_Level(level); - SetThreadQos + QOS::Qos_Level T ; + T = static_cast(level); + QOS::SetThreadQos(T); } return true; } @@ -136,11 +136,11 @@ bool FuzzConcurrentTaskServiceSetQosForOtherThread(const uint8_t* data, size_t s if (size > sizeof(int) + sizeof(int)) { int level = GetData(); int tid = GetData(); - enum Qos_Level T ; + QOS::Qos_Level T ; level = level % 5; level = level < 0 ? (-1) * level : level; - T = Qos_Level(level); - SetQosForOtherThread(T, tid); + T = static_cast(level); + QOS::SetQosForOtherThread(T, tid); } return true; } @@ -150,7 +150,7 @@ bool FuzzConcurrentTaskServiceResetThreadQos(const uint8_t* data, size_t size) g_baseFuzzData = data; g_baseFuzzSize = size; g_baseFuzzPos = 0; - ResetThreadQos(); + QOS::ResetThreadQos(); return true; } @@ -161,7 +161,7 @@ bool FuzzConcurrentTaskServiceResetQosForOtherThread(const uint8_t* data, size_t g_baseFuzzPos = 0; if (size > sizeof(int) + sizeof(int)) { int tid = GetData(); - ResetQosForOtherThread(tid); + QOS::ResetQosForOtherThread(tid); } return true; } -- Gitee From 9e3da384c6f97db69f0532739b91436eb5ec1e6f Mon Sep 17 00:00:00 2001 From: liuyuxiu Date: Tue, 24 Oct 2023 10:23:49 +0800 Subject: [PATCH 4/4] feature Signed-off-by: liuyuxiu --- 37.diff | 87 +++++++++++++++++++ services/src/concurrent_task_service_stub.cpp | 2 +- 2 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 37.diff diff --git a/37.diff b/37.diff new file mode 100644 index 0000000..6d8369b --- /dev/null +++ b/37.diff @@ -0,0 +1,87 @@ +diff --git a/services/src/concurrent_task_service_stub.cpp b/services/src/concurrent_task_service_stub.cpp +index 2e8daccde144b9e6f3b79422d3187dcafa5a21d1..bb4713eb6e467d7e9f87acae6d728e1b328bf978 100644 +--- a/services/src/concurrent_task_service_stub.cpp ++++ b/services/src/concurrent_task_service_stub.cpp +@@ -18,7 +18,7 @@ + #include "concurrent_task_errors.h" + #include "string_ex.h" + #include "ipc_skeleton.h" +- ++#include "qos.h" + namespace OHOS { + namespace ConcurrentTask { + namespace { +diff --git a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp +index c5d113e0da7a2445b3d57c50cc36c5683b990174..ed9d7046f47b298afba078a8940a6da7137cae3c 100644 +--- a/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp ++++ b/test/fuzztest/concurrent_fuzzer/concurrent_fuzzer.cpp +@@ -102,6 +102,69 @@ bool FuzzConcurrentTaskServiceQueryInterval(const uint8_t* data, size_t size) + } + return true; + } ++ ++bool FuzzConcurrentTaskServiceStopRemoteObject(const uint8_t* data, size_t size) ++{ ++ g_baseFuzzData = data; ++ g_baseFuzzSize = size; ++ g_baseFuzzPos = 0; ++ QOS::StopRemoteObject(); ++ return true; ++} ++ ++bool FuzzConcurrentTaskServiceSetThreadQos(const uint8_t* data, size_t size) ++{ ++ g_baseFuzzData = data; ++ g_baseFuzzSize = size; ++ g_baseFuzzPos = 0; ++ if (size > sizeof(int) + sizeof(int)) { ++ int level = GetData(); ++ level = level % 5; ++ level = level < 0 ? (-1) * level : level; ++ QOS::Qos_Level T ; ++ T = static_cast(level); ++ QOS::SetThreadQos(T); ++ } ++ return true; ++} ++ ++bool FuzzConcurrentTaskServiceSetQosForOtherThread(const uint8_t* data, size_t size) ++{ ++ g_baseFuzzData = data; ++ g_baseFuzzSize = size; ++ g_baseFuzzPos = 0; ++ if (size > sizeof(int) + sizeof(int)) { ++ int level = GetData(); ++ int tid = GetData(); ++ QOS::Qos_Level T ; ++ level = level % 5; ++ level = level < 0 ? (-1) * level : level; ++ T = static_cast(level); ++ QOS::SetQosForOtherThread(T, tid); ++ } ++ return true; ++} ++ ++bool FuzzConcurrentTaskServiceResetThreadQos(const uint8_t* data, size_t size) ++{ ++ g_baseFuzzData = data; ++ g_baseFuzzSize = size; ++ g_baseFuzzPos = 0; ++ QOS::ResetThreadQos(); ++ return true; ++} ++ ++bool FuzzConcurrentTaskServiceResetQosForOtherThread(const uint8_t* data, size_t size) ++{ ++ g_baseFuzzData = data; ++ g_baseFuzzSize = size; ++ g_baseFuzzPos = 0; ++ if (size > sizeof(int) + sizeof(int)) { ++ int tid = GetData(); ++ QOS::ResetQosForOtherThread(tid); ++ } ++ return true; ++} + } // namespace OHOS + + /* Fuzzer entry point */ diff --git a/services/src/concurrent_task_service_stub.cpp b/services/src/concurrent_task_service_stub.cpp index bb4713e..2e8dacc 100644 --- a/services/src/concurrent_task_service_stub.cpp +++ b/services/src/concurrent_task_service_stub.cpp @@ -18,7 +18,7 @@ #include "concurrent_task_errors.h" #include "string_ex.h" #include "ipc_skeleton.h" -#include "qos.h" + namespace OHOS { namespace ConcurrentTask { namespace { -- Gitee