* rtg control interface
*
* Copyright (c) 2022-2023 Huawei Technologies Co., Ltd.
*/
#ifndef __RTG_CTL_H
#define __RTG_CTL_H
#include <linux/compat.h>
#include <linux/uaccess.h>
#include <linux/sched/rtg_ctrl.h>
#include "frame_rtg.h"
#define INVALID_VALUE 0xffff
#define DEFAULT_RT_PRIO 97
#define MAX_DATA_LEN 256
#define DECIMAL 10
#define DEFAULT_MAX_UTIL 1024
#define MAX_SUBPROCESS_NUM 8
#define RTG_ID_INVALID (-1)
#define DEFAULT_MAX_RT_FRAME 10
#define MAX_RT_THREAD (MAX_TID_NUM + 2)
#define INIT_VALUE (-1)
#define UPDATE_RTG_FRAME (1 << 0)
#define ADD_RTG_FRAME (1 << 1)
#define CLEAR_RTG_FRAME (1 << 2)
#define DEFAULT_FREQ_CYCLE 4
#define MIN_FREQ_CYCLE 1
#define MAX_FREQ_CYCLE 16
#define DEFAULT_INVALID_INTERVAL 50
enum proc_state {
STATE_MIN = 0,
FRAME_DRAWING,
FRAME_RME_MAX = 19,
FRAME_END_STATE = FRAME_RME_MAX + 1,
FRAME_CLICK = 100,
STATE_MAX,
};
enum rtg_config {
RTG_FREQ_CYCLE,
RTG_FRAME_MAX_UTIL,
RTG_INVALID_INTERVAL,
RTG_CONFIG_NUM,
};
enum rtg_err_no {
SUCC = 0,
RTG_DISABLED = 1,
INVALID_ARG,
INVALID_MAGIC,
INVALID_CMD,
FRAME_ERR_PID = 100,
NO_FREE_MULTI_FRAME,
NOT_MULTI_FRAME,
INVALID_RTG_ID,
NO_RT_FRAME,
INVALID_PROC_STATE,
};
struct rtg_grp_data {
int rtg_cmd;
int grp_id;
int grp_type;
int rt_cnt;
int tid_num;
int tids[MAX_TID_NUM];
};
struct rtg_proc_data {
int rtgid;
int type;
int thread[MAX_TID_NUM];
int rtcnt;
};
#endif