• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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