1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * rtg control interface 4 * 5 * Copyright (c) 2022-2023 Huawei Technologies Co., Ltd. 6 */ 7 8 #ifndef __SCHED_RTG_CTL_H 9 #define __SCHED_RTG_CTL_H 10 11 #include <linux/fs.h> 12 13 #define SYSTEM_SERVER_UID 1000 14 #define MIN_APP_UID 10000 15 #define MAX_BOOST_DURATION_MS 5000 16 17 #define RTG_SCHED_IPC_MAGIC 0XAB 18 19 #define CMD_ID_SET_ENABLE \ 20 _IOWR(RTG_SCHED_IPC_MAGIC, SET_ENABLE, struct rtg_enable_data) 21 #define CMD_ID_SET_RTG \ 22 _IOWR(RTG_SCHED_IPC_MAGIC, SET_RTG, struct rtg_str_data) 23 #define CMD_ID_SET_CONFIG \ 24 _IOWR(RTG_SCHED_IPC_MAGIC, SET_CONFIG, struct rtg_str_data) 25 #define CMD_ID_SET_RTG_ATTR \ 26 _IOWR(RTG_SCHED_IPC_MAGIC, SET_RTG_ATTR, struct rtg_str_data) 27 #define CMD_ID_BEGIN_FRAME_FREQ \ 28 _IOWR(RTG_SCHED_IPC_MAGIC, BEGIN_FRAME_FREQ, struct proc_state_data) 29 #define CMD_ID_END_FRAME_FREQ \ 30 _IOWR(RTG_SCHED_IPC_MAGIC, END_FRAME_FREQ, struct proc_state_data) 31 #define CMD_ID_END_SCENE \ 32 _IOWR(RTG_SCHED_IPC_MAGIC, END_SCENE, struct proc_state_data) 33 #define CMD_ID_SET_MIN_UTIL \ 34 _IOWR(RTG_SCHED_IPC_MAGIC, SET_MIN_UTIL, struct proc_state_data) 35 #define CMD_ID_SET_MARGIN \ 36 _IOWR(RTG_SCHED_IPC_MAGIC, SET_MARGIN, struct proc_state_data) 37 #define CMD_ID_LIST_RTG \ 38 _IOWR(RTG_SCHED_IPC_MAGIC, LIST_RTG, struct rtg_info) 39 #define CMD_ID_LIST_RTG_THREAD \ 40 _IOWR(RTG_SCHED_IPC_MAGIC, LIST_RTG_THREAD, struct rtg_grp_data) 41 #define CMD_ID_SEARCH_RTG \ 42 _IOWR(RTG_SCHED_IPC_MAGIC, SEARCH_RTG, struct proc_state_data) 43 #define CMD_ID_GET_ENABLE \ 44 _IOWR(RTG_SCHED_IPC_MAGIC, GET_ENABLE, struct rtg_enable_data) 45 46 int proc_rtg_open(struct inode *inode, struct file *filp); 47 long proc_rtg_ioctl(struct file *file, unsigned int cmd, unsigned long arg); 48 #ifdef CONFIG_COMPAT 49 long proc_rtg_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg); 50 #endif 51 52 enum ioctl_abi_format { 53 IOCTL_ABI_ARM32, 54 IOCTL_ABI_AARCH64, 55 }; 56 57 enum rtg_sched_cmdid { 58 SET_ENABLE = 1, 59 SET_RTG, 60 SET_CONFIG, 61 SET_RTG_ATTR, 62 BEGIN_FRAME_FREQ = 5, 63 END_FRAME_FREQ, 64 END_SCENE, 65 SET_MIN_UTIL, 66 SET_MARGIN, 67 LIST_RTG = 10, 68 LIST_RTG_THREAD, 69 SEARCH_RTG, 70 GET_ENABLE, 71 RTG_CTRL_MAX_NR, 72 }; 73 74 /* proc_state */ 75 enum grp_ctrl_cmd { 76 CMD_CREATE_RTG_GRP, 77 CMD_ADD_RTG_THREAD, 78 CMD_REMOVE_RTG_THREAD, 79 CMD_CLEAR_RTG_GRP, 80 CMD_DESTROY_RTG_GRP 81 }; 82 83 struct rtg_enable_data { 84 int enable; 85 int len; 86 char *data; 87 }; 88 89 struct rtg_str_data { 90 int type; 91 int len; 92 char *data; 93 }; 94 95 struct proc_state_data { 96 int grp_id; 97 int state_param; 98 }; 99 #endif 100