10b9a52e3Sopenharmony_ci/* 20b9a52e3Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 30b9a52e3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 40b9a52e3Sopenharmony_ci * you may not use this file except in compliance with the License. 50b9a52e3Sopenharmony_ci * You may obtain a copy of the License at 60b9a52e3Sopenharmony_ci * 70b9a52e3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 80b9a52e3Sopenharmony_ci * 90b9a52e3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 100b9a52e3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 110b9a52e3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 120b9a52e3Sopenharmony_ci * See the License for the specific language governing permissions and 130b9a52e3Sopenharmony_ci * limitations under the License. 140b9a52e3Sopenharmony_ci */ 150b9a52e3Sopenharmony_ci 160b9a52e3Sopenharmony_ci#ifndef OHOS_FRAME_AWARE_SCHED_COMMON_INCLUDE_RTG_INTERFACE_H 170b9a52e3Sopenharmony_ci#define OHOS_FRAME_AWARE_SCHED_COMMON_INCLUDE_RTG_INTERFACE_H 180b9a52e3Sopenharmony_ci 190b9a52e3Sopenharmony_ci#include <string> 200b9a52e3Sopenharmony_ci#include <vector> 210b9a52e3Sopenharmony_ci 220b9a52e3Sopenharmony_cinamespace OHOS { 230b9a52e3Sopenharmony_cinamespace RME { 240b9a52e3Sopenharmony_ciusing namespace std; 250b9a52e3Sopenharmony_ci 260b9a52e3Sopenharmony_ci#define MAX_TID_NUM 5 270b9a52e3Sopenharmony_ci#define MAX_SUBPROCESS_NUM 8 280b9a52e3Sopenharmony_ci#define MULTI_FRAME_NUM 5 290b9a52e3Sopenharmony_ci 300b9a52e3Sopenharmony_cistruct rtg_enable_data { 310b9a52e3Sopenharmony_ci int enable; 320b9a52e3Sopenharmony_ci int len; 330b9a52e3Sopenharmony_ci char *data; 340b9a52e3Sopenharmony_ci}; 350b9a52e3Sopenharmony_ci 360b9a52e3Sopenharmony_cistruct rtg_str_data { 370b9a52e3Sopenharmony_ci int type; 380b9a52e3Sopenharmony_ci int len; 390b9a52e3Sopenharmony_ci char *data; 400b9a52e3Sopenharmony_ci}; 410b9a52e3Sopenharmony_ci 420b9a52e3Sopenharmony_cistruct proc_state_data { 430b9a52e3Sopenharmony_ci int grp_id; 440b9a52e3Sopenharmony_ci int state_param; 450b9a52e3Sopenharmony_ci}; 460b9a52e3Sopenharmony_ci 470b9a52e3Sopenharmony_cienum grp_ctrl_cmd { 480b9a52e3Sopenharmony_ci CMD_CREATE_RTG_GRP, 490b9a52e3Sopenharmony_ci CMD_ADD_RTG_THREAD, 500b9a52e3Sopenharmony_ci CMD_REMOVE_RTG_THREAD, 510b9a52e3Sopenharmony_ci CMD_CLEAR_RTG_GRP, 520b9a52e3Sopenharmony_ci CMD_DESTROY_RTG_GRP 530b9a52e3Sopenharmony_ci}; 540b9a52e3Sopenharmony_ci 550b9a52e3Sopenharmony_cistruct rtg_grp_data { 560b9a52e3Sopenharmony_ci int rtg_cmd; 570b9a52e3Sopenharmony_ci int grp_id; 580b9a52e3Sopenharmony_ci int prio_type; 590b9a52e3Sopenharmony_ci int rt_cnt; 600b9a52e3Sopenharmony_ci int tid_num; 610b9a52e3Sopenharmony_ci int tids[MAX_TID_NUM]; 620b9a52e3Sopenharmony_ci}; 630b9a52e3Sopenharmony_ci 640b9a52e3Sopenharmony_cistruct rtg_info { 650b9a52e3Sopenharmony_ci int rtg_num; 660b9a52e3Sopenharmony_ci int rtgs[MULTI_FRAME_NUM]; 670b9a52e3Sopenharmony_ci}; 680b9a52e3Sopenharmony_ci 690b9a52e3Sopenharmony_cienum rtg_sched_cmdid { 700b9a52e3Sopenharmony_ci SET_ENABLE = 1, 710b9a52e3Sopenharmony_ci SET_RTG, 720b9a52e3Sopenharmony_ci SET_CONFIG, 730b9a52e3Sopenharmony_ci SET_RTG_ATTR, 740b9a52e3Sopenharmony_ci BEGIN_FRAME_FREQ = 5, 750b9a52e3Sopenharmony_ci END_FRAME_FREQ, 760b9a52e3Sopenharmony_ci END_SCENE, 770b9a52e3Sopenharmony_ci SET_MIN_UTIL, 780b9a52e3Sopenharmony_ci SET_MARGIN, 790b9a52e3Sopenharmony_ci LIST_RTG, 800b9a52e3Sopenharmony_ci LIST_RTG_THREAD, 810b9a52e3Sopenharmony_ci SEARCH_RTG, 820b9a52e3Sopenharmony_ci GET_ENABLE, 830b9a52e3Sopenharmony_ci SET_MAX_UTIL, 840b9a52e3Sopenharmony_ci RTG_CTRL_MAX_NR, 850b9a52e3Sopenharmony_ci}; 860b9a52e3Sopenharmony_ci 870b9a52e3Sopenharmony_cibool GetAppExpelAbility(const std::string &appBundleName); 880b9a52e3Sopenharmony_ci 890b9a52e3Sopenharmony_ciextern "C" { 900b9a52e3Sopenharmony_ci int EnableRtg(bool flag); 910b9a52e3Sopenharmony_ci int AddThreadToRtg(int tid, int grpId, int prioType = 0, bool isBlue = false); 920b9a52e3Sopenharmony_ci int AddThreadsToRtg(vector<int> tids, int grpId, int prioType = 0, bool isBlue = false); 930b9a52e3Sopenharmony_ci int RemoveRtgThread(int tid, bool isBlue = false); 940b9a52e3Sopenharmony_ci int RemoveRtgThreads(vector<int> tids, bool isBlue = false); 950b9a52e3Sopenharmony_ci int DestroyRtgGrp(int grpId); 960b9a52e3Sopenharmony_ci int SetFrameRateAndPrioType(int rtgId, int rate, int rtgType); 970b9a52e3Sopenharmony_ci int BeginFrameFreq(int stateParam); 980b9a52e3Sopenharmony_ci int EndFrameFreq(int stateParam); 990b9a52e3Sopenharmony_ci int EndScene(int grpId); 1000b9a52e3Sopenharmony_ci int SetMinUtil(int stateParam); 1010b9a52e3Sopenharmony_ci int SetMaxUtil(int grpId, int stateParam); 1020b9a52e3Sopenharmony_ci int SetMargin(int stateParam); 1030b9a52e3Sopenharmony_ci int SearchRtgForTid(int tid); 1040b9a52e3Sopenharmony_ci int GetRtgEnable(); 1050b9a52e3Sopenharmony_ci} 1060b9a52e3Sopenharmony_ci} // namespace RME 1070b9a52e3Sopenharmony_ci} // namespace OHOS 1080b9a52e3Sopenharmony_ci#endif // OHOS_FRAME_AWARE_SCHED_COMMON_INCLUDE_RTG_INTERFACE_H 109