From 3f6b7c20b4b7319589348947353f2cb5878948d8 Mon Sep 17 00:00:00 2001 From: "1091773127@qq.com" Date: Wed, 18 Oct 2023 16:07:35 +0800 Subject: [PATCH] bugfix Signed-off-by: 1091773127@qq.com --- common/include/rtg_interface.h | 1 - .../include/intellisense_server.h | 1 + .../src/intellisense_server.cpp | 38 ++++++++++++++++++- .../innerkits/frameintf/frame_msg_intf.cpp | 5 +++ .../innerkits/frameintf/frame_msg_intf.h | 1 + .../innerkits/frameintf/rtg_interface.cpp | 26 ------------- 6 files changed, 44 insertions(+), 28 deletions(-) diff --git a/common/include/rtg_interface.h b/common/include/rtg_interface.h index dce9a3a..94f2a4e 100644 --- a/common/include/rtg_interface.h +++ b/common/include/rtg_interface.h @@ -86,7 +86,6 @@ enum rtg_sched_cmdid { extern "C" { int EnableRtg(bool flag); - int CreateNewRtgGrp(int prioType = 0, int rtNum = 0); // Return GrpId if success int AddThreadToRtg(int tid, int grpId, int prioType = 0); int AddThreadsToRtg(vector tids, int grpId, int prioType = 0); int RemoveRtgThread(int tid); diff --git a/frameworks/core/frame_aware_policy/include/intellisense_server.h b/frameworks/core/frame_aware_policy/include/intellisense_server.h index 7b34b8f..ad4222a 100644 --- a/frameworks/core/frame_aware_policy/include/intellisense_server.h +++ b/frameworks/core/frame_aware_policy/include/intellisense_server.h @@ -52,6 +52,7 @@ private: void AuthForeground(int uid); void AuthBackground(int uid); int TryCreateRtgForApp(AppInfo *app); + int CreateNewRtgGrp(int prioType = 0, int rtNum = 0); inline CgroupPolicy CheckCgroupState(const CgroupPolicy cgroup); std::list::iterator GetRecordOfPid(int pid); std::list m_historyApp = {}; diff --git a/frameworks/core/frame_aware_policy/src/intellisense_server.cpp b/frameworks/core/frame_aware_policy/src/intellisense_server.cpp index 6ca24c2..197e5cb 100644 --- a/frameworks/core/frame_aware_policy/src/intellisense_server.cpp +++ b/frameworks/core/frame_aware_policy/src/intellisense_server.cpp @@ -14,13 +14,17 @@ */ #include "intellisense_server.h" +#include +#include #include #include #include #include +#include #include +#include +#include #include -#include #include "qos_common.h" #include "para_config.h" #include "rtg_interface.h" @@ -32,6 +36,8 @@ namespace { static std::string configFilePath = "/system/etc/frame_aware_sched/hwrme.xml"; // need To check the exact file path. constexpr int WEB_BASE_UID = 1000001; constexpr int WEB_END_UID = 1099999; + const char RTG_SCHED_IPC_MAGIC = 0xAB; + constexpr int RTG_TYPE_MAX = 3; } using namespace std; using namespace QosCommon; @@ -39,6 +45,9 @@ using namespace QosCommon; DEFINE_RMELOG_INTELLISENSE("ueaServer-IntelliSenseServer"); IMPLEMENT_SINGLE_INSTANCE(IntelliSenseServer); +#define CMD_ID_SET_RTG \ + _IOWR(RTG_SCHED_IPC_MAGIC, SET_RTG, struct rtg_str_data) + void IntelliSenseServer::Init() { if (!ReadXml()) { @@ -349,5 +358,32 @@ void IntelliSenseServer::AuthBackground(int uid) } } +int IntelliSenseServer::CreateNewRtgGrp(int prioType, int rtNum) +{ + struct rtg_grp_data grp_data; + int ret; + char fileName[] = "/proc/self/sched_rtg_ctrl"; + int fd = open(fileName, O_RDWR); + if (fd < 0) { + RME_LOGE("Open file /proc/self/sched_rth_ctrl, errno = %{public}d", errno); + return fd; + } + (void)memset_s(&grp_data, sizeof(struct rtg_grp_data), 0, sizeof(struct rtg_grp_data)); + if ((prioType > 0) && (prioType < RTG_TYPE_MAX)) { + grp_data.prio_type = prioType; + } + if (rtNum > 0) { + grp_data.rt_cnt = rtNum; + } + grp_data.rtg_cmd = CMD_CREATE_RTG_GRP; + ret = ioctl(fd, CMD_ID_SET_RTG, &grp_data); + if (ret < 0) { + RME_LOGE("create rtg grp failed, errno = %{public}d (%{public}s)", errno, strerror(errno)); + } else { + RME_LOGI("create rtg grp success, get rtg id %{public}d.", ret); + } + close(fd); + return ret; +} } // namespace RME } // namesapce OHOS diff --git a/interfaces/innerkits/frameintf/frame_msg_intf.cpp b/interfaces/innerkits/frameintf/frame_msg_intf.cpp index d4e2b1a..0f2d500 100644 --- a/interfaces/innerkits/frameintf/frame_msg_intf.cpp +++ b/interfaces/innerkits/frameintf/frame_msg_intf.cpp @@ -123,6 +123,11 @@ void FrameMsgIntf::ReportCgroupChange(const int pid, const int uid, const int ol }); } +void FrameMsgIntf::ReportSlideEvent(const int pid, const int uid, const int64_t status) +{ + return; +} + void FrameMsgIntf::Stop() { std::lock_guard autoLock(frameMsgIntfMutex_); diff --git a/interfaces/innerkits/frameintf/frame_msg_intf.h b/interfaces/innerkits/frameintf/frame_msg_intf.h index 199f250..0e320ae 100644 --- a/interfaces/innerkits/frameintf/frame_msg_intf.h +++ b/interfaces/innerkits/frameintf/frame_msg_intf.h @@ -32,6 +32,7 @@ public: void ReportCgroupChange(const int pid, const int uid, const int oldGroup, const int newGroup); void ReportWindowFocus(const int pid, const int uid, const int isFocus); void ReportRenderThread(const int pid, const int uid, const int renderTid); + void ReportSlideEvent(const int pid, const int uid, const int64_t status); void Stop(); protected: FrameMsgIntf() = default; diff --git a/interfaces/innerkits/frameintf/rtg_interface.cpp b/interfaces/innerkits/frameintf/rtg_interface.cpp index 3f78d20..be10382 100644 --- a/interfaces/innerkits/frameintf/rtg_interface.cpp +++ b/interfaces/innerkits/frameintf/rtg_interface.cpp @@ -30,7 +30,6 @@ namespace RME { namespace { constexpr size_t MAX_LENGTH = 100; constexpr size_t MAX_STR_LEN = 100; - constexpr int RTG_TYPE_MAX = 3; } DEFINE_RMELOG_INTELLISENSE("rtg_interface"); @@ -105,31 +104,6 @@ int EnableRtg(bool flag) return 0; }; -int CreateNewRtgGrp(int prioType, int rtNum) -{ - struct rtg_grp_data grp_data; - int ret; - if (g_fd < 0) { - RME_LOGE("Open file /proc/self/sched_rtg_ctrl, errno = %{public}d", errno); - return g_fd; - } - (void)memset_s(&grp_data, sizeof(struct rtg_grp_data), 0, sizeof(struct rtg_grp_data)); - if ((prioType > 0) && (prioType < RTG_TYPE_MAX)) { - grp_data.prio_type = prioType; - } - if (rtNum > 0) { - grp_data.rt_cnt = rtNum; - } - grp_data.rtg_cmd = CMD_CREATE_RTG_GRP; - ret = ioctl(g_fd, CMD_ID_SET_RTG, &grp_data); - if (ret < 0) { - RME_LOGE("create rtg grp failed, errno = %{public}d (%{public}s)", errno, strerror(errno)); - } else { - RME_LOGI("create rtg grp success, get rtg id %{public}d.", ret); - } - return ret; -} - int AddThreadToRtg(int tid, int grpId, int prioType) { if (g_fd < 0) { -- Gitee