From c567a493eaa37e97be2f85aa233dfa511240de6d Mon Sep 17 00:00:00 2001 From: Brian Date: Tue, 5 Dec 2023 16:02:31 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8DLinux=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Brian --- common/include/rtg_interface.h | 12 +- .../src/rme_core_sched.cpp | 10 +- .../innerkits/frameintf/rtg_interface.cpp | 110 +-------- test/unittest/phone/rtg_interface_test.cpp | 208 +++++------------- 4 files changed, 71 insertions(+), 269 deletions(-) diff --git a/common/include/rtg_interface.h b/common/include/rtg_interface.h index 94f2a4e..71c472b 100644 --- a/common/include/rtg_interface.h +++ b/common/include/rtg_interface.h @@ -89,18 +89,14 @@ extern "C" { int AddThreadToRtg(int tid, int grpId, int prioType = 0); int AddThreadsToRtg(vector tids, int grpId, int prioType = 0); int RemoveRtgThread(int tid); - int ClearRtgGrp(int grpId); int DestroyRtgGrp(int grpId); int SetFrameRateAndPrioType(int rtgId, int rate, int rtgType); - int SetMaxVipRtgs(int rtframe); - int BeginFrameFreq(int grpId, int stateParam); - int EndFrameFreq(int grpId); + int BeginFrameFreq(int stateParam); + int EndFrameFreq(int stateParam); int EndScene(int grpId); - int SetMinUtil(int grpId, int stateParam); + int SetMinUtil(int stateParam); int SetMaxUtil(int grpId, int stateParam); - int SetMargin(int grpId, int stateParam); - int ListRtgThread(int grpId, vector *rs); // list all tasks of grpId; - int ListRtgGroup(vector *rs); + int SetMargin(int stateParam); int SearchRtgForTid(int tid); int GetRtgEnable(); } diff --git a/frameworks/core/frame_aware_collector/src/rme_core_sched.cpp b/frameworks/core/frame_aware_collector/src/rme_core_sched.cpp index 7c3e1ee..43a0566 100644 --- a/frameworks/core/frame_aware_collector/src/rme_core_sched.cpp +++ b/frameworks/core/frame_aware_collector/src/rme_core_sched.cpp @@ -64,7 +64,7 @@ void RmeCoreSched::BeginFlushAnimation() return; } } - int ret = BeginFrameFreq(m_rtg, 0); + int ret = BeginFrameFreq(0); m_uiTid = gettid(); if (!m_uiHasSend) { StartTrace(HITRACE_TAG_ACE, @@ -83,7 +83,7 @@ void RmeCoreSched::BeginFlushBuild() { StartTrace(HITRACE_TAG_ACE, ("FrameS-SetMargin-rtg:" + to_string(m_rtg) + " margin:" + to_string(MARGIN_BEGIN)).c_str()); - SetMargin(m_rtg, MARGIN_BEGIN); + SetMargin(MARGIN_BEGIN); FinishTrace(HITRACE_TAG_ACE); } @@ -97,7 +97,7 @@ void RmeCoreSched::BeginFlushRender() { StartTrace(HITRACE_TAG_ACE, ("FrameS-SetMargin-rtg:" + to_string(m_rtg) + " margin:" + to_string(MARGIN_MIDDLE)).c_str()); - SetMargin(m_rtg, MARGIN_MIDDLE); + SetMargin(MARGIN_MIDDLE); FinishTrace(HITRACE_TAG_ACE); } @@ -122,7 +122,7 @@ void RmeCoreSched::RenderStart() { StartTrace(HITRACE_TAG_ACE, ("FrameS-SetMargin-rtg:" + to_string(m_rtg) + " margin:" + to_string(MARGIN_END)).c_str()); - SetMargin(m_rtg, MARGIN_END); + SetMargin(MARGIN_END); FinishTrace(HITRACE_TAG_ACE); } @@ -132,7 +132,7 @@ void RmeCoreSched::SendCommandsStart() return; } StartTrace(HITRACE_TAG_ACE, "SendCommandsStart-EndFreq"); - EndFrameFreq(m_rtg); + EndFrameFreq(0); FinishTrace(HITRACE_TAG_ACE); } diff --git a/interfaces/innerkits/frameintf/rtg_interface.cpp b/interfaces/innerkits/frameintf/rtg_interface.cpp index 0d90f47..cfbf152 100644 --- a/interfaces/innerkits/frameintf/rtg_interface.cpp +++ b/interfaces/innerkits/frameintf/rtg_interface.cpp @@ -29,7 +29,6 @@ namespace OHOS { namespace RME { namespace { constexpr size_t MAX_LENGTH = 100; - constexpr size_t MAX_STR_LEN = 100; } DEFINE_RMELOG_INTELLISENSE("rtg_interface"); @@ -56,10 +55,6 @@ static int g_fd = -1; _IOWR(RTG_SCHED_IPC_MAGIC, SET_MAX_UTIL, struct proc_state_data) #define CMD_ID_SET_MARGIN \ _IOWR(RTG_SCHED_IPC_MAGIC, SET_MARGIN, struct proc_state_data) -#define CMD_ID_LIST_RTG \ - _IOWR(RTG_SCHED_IPC_MAGIC, LIST_RTG, struct rtg_info) -#define CMD_ID_LIST_RTG_THREAD \ - _IOWR(RTG_SCHED_IPC_MAGIC, LIST_RTG_THREAD, struct rtg_grp_data) #define CMD_ID_SEARCH_RTG \ _IOWR(RTG_SCHED_IPC_MAGIC, SEARCH_RTG, struct proc_state_data) #define CMD_ID_GET_ENABLE \ @@ -84,6 +79,7 @@ __attribute__((destructor))void BasicCloseRtgNode() } RME_LOGI("rtg Close g_fd ret is %{public}d", g_fd); close(g_fd); + g_fd = -1; } int EnableRtg(bool flag) @@ -170,25 +166,6 @@ int RemoveRtgThread(int tid) return ret; }; -int ClearRtgGrp(int grpId) -{ - if (g_fd < 0) { - return g_fd; - } - struct rtg_grp_data grp_data; - int ret; - (void)memset_s(&grp_data, sizeof(struct rtg_grp_data), 0, sizeof(struct rtg_grp_data)); - grp_data.rtg_cmd = CMD_CLEAR_RTG_GRP; - grp_data.grp_id = grpId; - ret = ioctl(g_fd, CMD_ID_SET_RTG, &grp_data); - if (ret < 0) { - RME_LOGE("clear rtg grp failed, errno = %{public}d (%{public}s)", errno, strerror(errno)); - } else { - RME_LOGI("clear rtg grp success, get rtg id %{public}d.", ret); - } - return ret; -}; - int DestroyRtgGrp(int grpId) { if (g_fd < 0) { @@ -208,28 +185,6 @@ int DestroyRtgGrp(int grpId) return ret; }; - -int SetMaxVipRtgs(int rtframe) -{ - if (g_fd < 0) { - return g_fd; - } - int ret = 0; - char str_data[MAX_STR_LEN] = {}; - (void)sprintf_s(str_data, sizeof(str_data), "rtframe:%d", rtframe); - struct rtg_str_data strData; - strData.len = strlen(str_data); - strData.data = str_data; - - ret = ioctl(g_fd, CMD_ID_SET_CONFIG, &strData); - if (ret < 0) { - RME_LOGE("set single config failed, ret = %{public}d", ret); - } else { - RME_LOGI("set single config success, get rtg id %{public}d.", ret); - } - return ret; -} - int SetFrameRateAndPrioType(int rtgId, int rate, int rtgType) { if (g_fd < 0) { @@ -251,29 +206,27 @@ int SetFrameRateAndPrioType(int rtgId, int rate, int rtgType) return ret; } -int BeginFrameFreq(int grpId, int stateParam) +int BeginFrameFreq(int stateParam) { if (g_fd < 0) { return g_fd; } int ret = 0; struct proc_state_data state_data; - state_data.grp_id = grpId; state_data.state_param = stateParam; ret = ioctl(g_fd, CMD_ID_BEGIN_FRAME_FREQ, &state_data); return ret; } -int EndFrameFreq(int grpId) +int EndFrameFreq(int stateParam) { if (g_fd < 0) { return g_fd; } int ret = 0; struct proc_state_data state_data; - state_data.grp_id = grpId; - state_data.state_param = 0; + state_data.state_param = stateParam; ret = ioctl(g_fd, CMD_ID_END_FRAME_FREQ, &state_data); return ret; @@ -296,11 +249,10 @@ int EndScene(int grpId) return ret; } -int SetMinUtil(int grpId, int stateParam) +int SetMinUtil(int stateParam) { int ret = 0; struct proc_state_data state_data; - state_data.grp_id = grpId; state_data.state_param = stateParam; if (g_fd < 0) { @@ -320,11 +272,10 @@ int SetMaxUtil(int grpId, int stateParam) return 0; } -int SetMargin(int grpId, int stateParam) +int SetMargin(int stateParam) { int ret = 0; struct proc_state_data state_data; - state_data.grp_id = grpId; state_data.state_param = stateParam; if (g_fd < 0) { @@ -334,55 +285,6 @@ int SetMargin(int grpId, int stateParam) return ret; } -int ListRtgGroup(vector *rs) -{ - int ret = 0; - struct rtg_info rtg_info; - if (g_fd < 0) { - return g_fd; - } - if (!rs) { - return -1; - } - (void)memset_s(&rtg_info, sizeof(struct rtg_info), 0, sizeof(struct rtg_info)); - ret = ioctl(g_fd, CMD_ID_LIST_RTG, &rtg_info); - if (ret < 0) { - RME_LOGE("list rtg group failed, errno = %{public}d (%{public}s)", errno, strerror(errno)); - } else { - RME_LOGI("list rtg group success with num %{public}d", rtg_info.rtg_num); - rs->clear(); - for (int i = 0; i < rtg_info.rtg_num; i++) { - rs->push_back(rtg_info.rtgs[i]); - } - } - return ret; -} - -int ListRtgThread(int grpId, vector *rs) -{ - if (g_fd < 0) { - return g_fd; - } - int ret = 0; - struct rtg_grp_data grp_data; - if (!rs) { - return -1; - } - (void)memset_s(&grp_data, sizeof(struct rtg_grp_data), 0, sizeof(struct rtg_grp_data)); - grp_data.grp_id = grpId; - ret = ioctl(g_fd, CMD_ID_LIST_RTG_THREAD, &grp_data); - if (ret < 0) { - RME_LOGE("list rtg thread failed, errno = %{public}d (%{public}s)", errno, strerror(errno)); - } else { - RME_LOGI("list rtg thread success with tid num %{public}d", grp_data.tid_num); - rs->clear(); - for (int i = 0; i < grp_data.tid_num; i++) { - rs->push_back(grp_data.tids[i]); - } - } - return ret; -} - int SearchRtgForTid(int tid) { if (g_fd < 0) { diff --git a/test/unittest/phone/rtg_interface_test.cpp b/test/unittest/phone/rtg_interface_test.cpp index 3ff451b..c5f0457 100644 --- a/test/unittest/phone/rtg_interface_test.cpp +++ b/test/unittest/phone/rtg_interface_test.cpp @@ -162,66 +162,44 @@ HWTEST_F(RtgInterfaceTest, RtgInterfaceAddRtgs, TestSize.Level1) } /** - * @tc.name: RtgInterfaceClearRtg - * @tc.desc: Verify Rtg clear function. + * @tc.name: RtgInterfaceBeginFrameFreq + * @tc.desc: Verify rtg frame start function. * @tc.type: FUNC */ -HWTEST_F(RtgInterfaceTest, RtgInterfaceClearRtg, TestSize.Level1) +HWTEST_F(RtgInterfaceTest, RtgInterfaceBeginFrameFreq, TestSize.Level1) { int ret; int grpId; int pid = getpid(); + vector pids = {}; + pids.push_back(pid); grpId = IntelliSenseServer::GetInstance().CreateNewRtgGrp(VIP, 0); EXPECT_GT(grpId, 0); - ret = AddThreadToRtg(pid, grpId); + ret = AddThreadsToRtg(pids, grpId); EXPECT_EQ(ret, 0); - ret = ClearRtgGrp(grpId); + ret = BeginFrameFreq(0); EXPECT_EQ(ret, 0); ret = DestroyRtgGrp(grpId); EXPECT_EQ(ret, 0); } /** - * @tc.name: RtgInterfaceClearErrorGroup - * @tc.desc: Verify Rtg clear function with error groupid. - * @tc.type: FUNC - */ -HWTEST_F(RtgInterfaceTest, RtgInterfaceClearErrorGroup, TestSize.Level1) -{ - int ret; - ret = ClearRtgGrp(-1); - EXPECT_NE(ret, 0); -} - -/** - * @tc.name: RtgInterfaceBeginFrameFreq - * @tc.desc: Verify rtg frame start function. + * @tc.name: RtgInterfaceBeginFrameFreqWithNoAddThreadtoGrp + * @tc.desc: Verify rtg frame start function with NoAddThreadtoGrp. * @tc.type: FUNC */ -HWTEST_F(RtgInterfaceTest, RtgInterfaceBeginFrameFreq, TestSize.Level1) +HWTEST_F(RtgInterfaceTest, RtgInterfaceBeginFrameFreqWithNoAddThreadtoGrp, TestSize.Level1) { int ret; int grpId; grpId = IntelliSenseServer::GetInstance().CreateNewRtgGrp(VIP, 0); EXPECT_GT(grpId, 0); - ret = BeginFrameFreq(grpId, 0); - EXPECT_EQ(ret, 0); + ret = BeginFrameFreq(0); + EXPECT_NE(ret, 0); ret = DestroyRtgGrp(grpId); EXPECT_EQ(ret, 0); } -/** - * @tc.name: RtgInterfaceBeginFrameFreqWithErrorGrp - * @tc.desc: Verify rtg frame start function with error groupid. - * @tc.type: FUNC - */ -HWTEST_F(RtgInterfaceTest, RtgInterfaceBeginFrameFreqWithErrorGrp, TestSize.Level1) -{ - int ret; - ret = BeginFrameFreq(-1, 0); - EXPECT_NE(ret, 0); -} - /** * @tc.name: RtgInterfaceEndFrameFreq * @tc.desc: Verify rtg frame end function. @@ -231,24 +209,34 @@ HWTEST_F(RtgInterfaceTest, RtgInterfaceEndFrameFreq, TestSize.Level1) { int ret; int grpId; + int pid = getpid(); + vector pids = {}; + pids.push_back(pid); grpId = IntelliSenseServer::GetInstance().CreateNewRtgGrp(VIP, 0); EXPECT_GT(grpId, 0); - ret = EndFrameFreq(grpId); + ret = AddThreadsToRtg(pids, grpId); + EXPECT_EQ(ret, 0); + ret = EndFrameFreq(0); EXPECT_EQ(ret, 0); ret = DestroyRtgGrp(grpId); EXPECT_EQ(ret, 0); } /** - * @tc.name: RtgInterfaceEndFrameFreqWithErrorGrp - * @tc.desc: Verify rtg frame end function with error groupid. + * @tc.name: RtgInterfaceEndFrameFreqWithNoAddThreadtoGrp + * @tc.desc: Verify rtg frame end function with NoAddThreadtoGrp. * @tc.type: FUNC */ -HWTEST_F(RtgInterfaceTest, RtgInterfaceEndFrameFreqWithErrorGrp, TestSize.Level1) +HWTEST_F(RtgInterfaceTest, RtgInterfaceEndFrameFreqWithNoAddThreadtoGrp, TestSize.Level1) { int ret; - ret = EndFrameFreq(-1); + int grpId; + grpId = IntelliSenseServer::GetInstance().CreateNewRtgGrp(VIP, 0); + EXPECT_GT(grpId, 0); + ret = EndFrameFreq(0); EXPECT_NE(ret, 0); + ret = DestroyRtgGrp(grpId); + EXPECT_EQ(ret, 0); } /** @@ -260,8 +248,13 @@ HWTEST_F(RtgInterfaceTest, RtgInterfaceEndScene, TestSize.Level1) { int ret; int grpId; + int pid = getpid(); + vector pids = {}; + pids.push_back(pid); grpId = IntelliSenseServer::GetInstance().CreateNewRtgGrp(VIP, 0); EXPECT_GT(grpId, 0); + ret = AddThreadsToRtg(pids, grpId); + EXPECT_EQ(ret, 0); ret = EndScene(grpId); EXPECT_EQ(ret, 0); ret = DestroyRtgGrp(grpId); @@ -289,128 +282,75 @@ HWTEST_F(RtgInterfaceTest, RtgInterfaceSetMinUtil, TestSize.Level1) { int ret; int grpId; + int pid = getpid(); + vector pids = {}; + pids.push_back(pid); grpId = IntelliSenseServer::GetInstance().CreateNewRtgGrp(VIP, 0); EXPECT_GT(grpId, 0); - ret = SetMinUtil(grpId, 0); + ret = AddThreadsToRtg(pids, grpId); + EXPECT_EQ(ret, 0); + ret = SetMinUtil(0); EXPECT_EQ(ret, 0); ret = DestroyRtgGrp(grpId); EXPECT_EQ(ret, 0); } /** - * @tc.name: RtgInterfaceSetMinUtilWithErrorGrp - * @tc.desc: Verify rtg minUtil set function with error groupid. + * @tc.name: RtgInterfaceSetMinUtilWithNoAddThreadtoGrp + * @tc.desc: Verify rtg minUtil set function with NoAddThreadtoGrp. * @tc.type: FUNC */ -HWTEST_F(RtgInterfaceTest, RtgInterfaceSetMinUtilWithErrorGrp, TestSize.Level1) -{ - int ret; - ret = SetMinUtil(-1, 0); - EXPECT_NE(ret, 0); -} - -/** - * @tc.name: RtgInterfaceSetMargin - * @tc.desc: Verify rtg margin set function. - * @tc.type: FUNC - */ -HWTEST_F(RtgInterfaceTest, RtgInterfaceSetMargin, TestSize.Level1) +HWTEST_F(RtgInterfaceTest, RtgInterfaceSetMinUtilWithNoAddThreadtoGrp, TestSize.Level1) { int ret; int grpId; grpId = IntelliSenseServer::GetInstance().CreateNewRtgGrp(VIP, 0); EXPECT_GT(grpId, 0); - ret = SetMargin(grpId, 0); - EXPECT_EQ(ret, 0); + ret = SetMinUtil(0); + EXPECT_NE(ret, 0); ret = DestroyRtgGrp(grpId); EXPECT_EQ(ret, 0); } /** - * @tc.name: RtgInterfaceSetMarginWithErrorGrp - * @tc.desc: Verify rtg margin set function with error groupid. - * @tc.type: FUNC - */ -HWTEST_F(RtgInterfaceTest, RtgInterfaceSetMarginWithErrorGrp, TestSize.Level1) -{ - int ret; - ret = SetMargin(-1, 0); - EXPECT_NE(ret, 0); -} - -/** - * @tc.name: RtgInterfaceListRtgThread - * @tc.desc: Verify rtg list function. + * @tc.name: RtgInterfaceSetMargin + * @tc.desc: Verify rtg margin set function. * @tc.type: FUNC */ -HWTEST_F(RtgInterfaceTest, RtgInterfaceListRtgThread, TestSize.Level1) +HWTEST_F(RtgInterfaceTest, RtgInterfaceSetMargin, TestSize.Level1) { int ret; int grpId; - vector rs; + int pid = getpid(); + vector pids = {}; + pids.push_back(pid); grpId = IntelliSenseServer::GetInstance().CreateNewRtgGrp(VIP, 0); EXPECT_GT(grpId, 0); - ret = ListRtgThread(grpId, &rs); + ret = AddThreadsToRtg(pids, grpId); + EXPECT_EQ(ret, 0); + ret = SetMargin(0); EXPECT_EQ(ret, 0); ret = DestroyRtgGrp(grpId); EXPECT_EQ(ret, 0); } /** - * @tc.name: RtgInterfaceListRtgThreadWithNullRes - * @tc.desc: Verify rtg thread list function with null vector input. + * @tc.name: RtgInterfaceSetMarginWithNoAddThreadtoGrp + * @tc.desc: Verify rtg margin set function with NoAddThreadtoGrp. * @tc.type: FUNC */ -HWTEST_F(RtgInterfaceTest, RtgInterfaceListRtgThreadWithNullRes, TestSize.Level1) +HWTEST_F(RtgInterfaceTest, RtgInterfaceSetMarginWithNoAddThreadtoGrp, TestSize.Level1) { int ret; int grpId; grpId = IntelliSenseServer::GetInstance().CreateNewRtgGrp(VIP, 0); EXPECT_GT(grpId, 0); - ret = ListRtgThread(grpId, nullptr); + ret = SetMargin(0); EXPECT_NE(ret, 0); ret = DestroyRtgGrp(grpId); EXPECT_EQ(ret, 0); } -/** - * @tc.name: RtgInterfaceListRtgThreadWithErrorGrp - * @tc.desc: Verify rtg thread list function with error groupid. - * @tc.type: FUNC - */ -HWTEST_F(RtgInterfaceTest, RtgInterfaceListRtgThreadWithErrorGrp, TestSize.Level1) -{ - int ret; - vector rs; - ret = ListRtgThread(-1, &rs); - EXPECT_NE(ret, 0); -} - -/** - * @tc.name: RtgInterfaceListRtgGroup - * @tc.desc: Verify rtg list function. - * @tc.type: FUNC - */ -HWTEST_F(RtgInterfaceTest, RtgInterfaceListRtgGroup, TestSize.Level1) -{ - int ret; - vector rs; - ret = ListRtgGroup(&rs); - EXPECT_EQ(ret, 0); -} - -/** - * @tc.name: RtgInterfaceListRtgGroupWithNullRes - * @tc.desc: Verify rtg list function with null vector input. - * @tc.type: FUNC - */ -HWTEST_F(RtgInterfaceTest, RtgInterfaceListRtgGroupWithNullRes, TestSize.Level1) -{ - int ret; - ret = ListRtgGroup(nullptr); - EXPECT_NE(ret, 0); -} - /** * @tc.name: RtgInterfaceSetAttr * @tc.desc: Verify rtg attr set function. @@ -445,42 +385,6 @@ HWTEST_F(RtgInterfaceTest, RtgInterfaceSetErrorAttr, TestSize.Level1) EXPECT_EQ(ret, 0); } -/** - * @tc.name: RtgInterfaceSetMaxVips - * @tc.desc: Verify rtg max vip num set function. - * @tc.type: FUNC - */ -HWTEST_F(RtgInterfaceTest, RtgInterfaceSetMaxVips, TestSize.Level1) -{ - int ret; - ret = SetMaxVipRtgs(2); - EXPECT_EQ(ret, 0); -} - -/** - * @tc.name: RtgInterfaceSetErrorMaxVips - * @tc.desc: Verify rtg max vip num set function with 0 vip nums. - * @tc.type: FUNC - */ -HWTEST_F(RtgInterfaceTest, RtgInterfaceSetErrorMaxVips, TestSize.Level1) -{ - int ret; - ret = SetMaxVipRtgs(0); - EXPECT_NE(ret, 0); -} - -/** - * @tc.name: RtgInterfaceSetLargeMaxVips - * @tc.desc: Verify rtg max vip num set function with too large vip nums. - * @tc.type: FUNC - */ -HWTEST_F(RtgInterfaceTest, RtgInterfaceSetLargeMaxVips, TestSize.Level1) -{ - int ret; - ret = SetMaxVipRtgs(50000); - EXPECT_NE(ret, 0); -} - /** * @tc.name: RtgInterfaceAddMultipleThreads * @tc.desc: Verify rtg multiple add function. -- Gitee