Files
Michael Bestas 3c5bab30b4 treewide: Import drivers/dts from oneplus/sm8250_t_13.0.0_op8
Change-Id: I5451cd543f28c485e79508e051533d41323d5f5b
2022-12-17 18:14:34 +02:00

247 lines
7.1 KiB
C

#ifndef __IM_H__
#define __IM_H__
#include <linux/sched.h>
/* since im_flag is 32bit, don't identify too much */
enum {
IM_ID_SURFACEFLINGER = 0, // surfaceflinger
IM_ID_KWORKER, // kworker
IM_ID_LOGD, // logd
IM_ID_LOGCAT, // logcat
IM_ID_MAIN, // application main thread
IM_ID_ENQUEUE, // qneueue frame task
IM_ID_GL, // open GL tasks
IM_ID_VK, // vulkan tasks
IM_ID_HWC, // hwcomposer
IM_ID_HWBINDER, // hw binder
IM_ID_BINDER, // binder
IM_ID_HWUI, // hwui tasks
IM_ID_RENDER, // application render thread
IM_ID_UNITY_WORKER_THREAD, // unity worker thread
IM_ID_UNITY_MAIN, // unity main
IM_ID_LAUNCHER, // launcher
IM_ID_HWUI_EX, // Hwui task (render enhancement feature)
IM_ID_BMT, // Bitmap thread
IM_ID_CRENDER, // Chrome render
#ifdef CONFIG_OPLUS_FEATURE_INPUT_BOOST
IM_ID_WEBVIEW, // WEBVIEW
#endif
IM_ID_MAX
};
#define IM_SURFACEFLINGER (1 << IM_ID_SURFACEFLINGER)
#define IM_KWORKER (1 << IM_ID_KWORKER)
#define IM_LOGD (1 << IM_ID_LOGD)
#define IM_LOGCAT (1 << IM_ID_LOGCAT)
#define IM_MAIN (1 << IM_ID_MAIN)
#define IM_ENQUEUE (1 << IM_ID_ENQUEUE)
#define IM_GL (1 << IM_ID_GL)
#define IM_VK (1 << IM_ID_VK)
#define IM_HWC (1 << IM_ID_HWC)
#define IM_HWBINDER (1 << IM_ID_HWBINDER)
#define IM_BINDER (1 << IM_ID_BINDER)
#define IM_HWUI (1 << IM_ID_HWUI)
#define IM_RENDER (1 << IM_ID_RENDER)
#define IM_UNITY_WORKER_THREAD (1 << IM_ID_UNITY_WORKER_THREAD)
#define IM_UNITY_MAIN (1 << IM_ID_UNITY_MAIN)
#define IM_LAUNCHER (1 << IM_ID_LAUNCHER)
#define IM_HWUI_EX (1 << IM_ID_HWUI_EX)
#define IM_BMT (1 << IM_ID_BMT)
#define IM_CRENDER (1 << IM_ID_CRENDER)
#ifdef CONFIG_OPLUS_FEATURE_INPUT_BOOST
#define IM_WEBVIEW (1 << IM_ID_WEBVIEW)
#endif
/* ignore list */
enum {
IM_IG_SF_PROBER = 0,
IM_IG_SF_APP,
IM_IG_SF_SF,
IM_IG_SF_DISPSYNC,
IM_IG_SF_SCREENSHOTTHRES,
IM_IG_HWC_DPPS,
IM_IG_HWC_LTM,
IM_IG_MAX
};
/* TODO add for group identify */
/* TODO add check for cmdline to cover zygote */
#ifdef CONFIG_OPLUS_FEATURE_IM
static inline bool im_sf(struct task_struct *task)
{
return task->im_flag & IM_SURFACEFLINGER;
}
static inline bool im_kw(struct task_struct *task)
{
return task->im_flag & IM_KWORKER;
}
static inline bool im_logd(struct task_struct *task)
{
return task->im_flag & IM_LOGD;
}
static inline bool im_logcat(struct task_struct *task)
{
return task->im_flag & IM_LOGCAT;
}
static inline bool im_rendering(struct task_struct *task)
{
/* TODO should handle this part after RATP phased in */
#ifdef CONFIG_RATP
if (is_ratp_enable() && is_allowmost_enable()) {
return task->im_flag &
(IM_MAIN |
IM_ENQUEUE |
IM_SURFACEFLINGER |
IM_GL |
IM_VK |
IM_RENDER |
IM_HWC |
IM_HWBINDER |
IM_BINDER |
IM_BMT |
IM_CRENDER);
}
#endif
return task->im_flag &
(IM_MAIN |
IM_ENQUEUE |
IM_SURFACEFLINGER |
IM_GL |
IM_VK |
IM_HWC |
IM_RENDER |
IM_BMT |
IM_CRENDER);
}
static inline bool im_graphic(struct task_struct *task)
{
return task->im_flag & (IM_GL | IM_VK | IM_HWUI | IM_HWUI_EX);
}
static inline bool im_main(struct task_struct *task)
{
return task->im_flag & IM_MAIN;
}
static inline bool im_render(struct task_struct *task)
{
return task->im_flag & IM_RENDER;
}
static inline bool im_enqueue(struct task_struct *task)
{
return task->im_flag & IM_ENQUEUE;
}
static inline bool im_gl(struct task_struct *task)
{
return task->im_flag & IM_GL;
}
static inline bool im_vk(struct task_struct *task)
{
return task->im_flag & IM_VK;
}
static inline bool im_hwc(struct task_struct *task)
{
return task->im_flag & IM_HWC;
}
static inline bool im_hwbinder(struct task_struct *task)
{
return task->im_flag & IM_HWBINDER;
}
static inline bool im_binder(struct task_struct *task)
{
return task->im_flag & IM_BINDER;
}
static inline bool im_binder_related(struct task_struct *task)
{
return task->im_flag & (IM_HWBINDER | IM_BINDER);
}
static inline bool im_hwui(struct task_struct *task)
{
return task->im_flag & IM_HWUI;
}
static inline bool im_unity_worker_thread(struct task_struct *task)
{
return task->im_flag & (IM_UNITY_WORKER_THREAD);
}
static inline bool im_unity_main(struct task_struct *task)
{
return task->im_flag & (IM_UNITY_MAIN);
}
static inline bool im_launcher(struct task_struct *task)
{
return task->im_flag & IM_LAUNCHER;
}
static inline bool im_hwuiEx(struct task_struct *task)
{
return task->im_flag & IM_HWUI_EX;
}
static inline bool im_crender(struct task_struct *task)
{
return task->im_flag & IM_CRENDER;
}
static inline bool im_bmt(struct task_struct *task)
{
return task->im_flag & IM_BMT;
}
extern void im_wmi(struct task_struct *task);
extern void im_set_flag(struct task_struct *task, int flag);
extern void im_unset_flag(struct task_struct *task, int flag);
extern void im_reset_flag(struct task_struct *task);
extern void im_to_str(int flag, char* desc, int size);
extern void im_tsk_init_flag(void *ptr);
#else
static inline bool im_sf(struct task_struct *task) { return false; }
static inline bool im_kw(struct task_struct *task) { return false; }
static inline bool im_logd(struct task_struct *task) { return false; }
static inline bool im_logcat(struct task_struct *task) { return false; }
static inline bool im_rendering(struct task_struct *task) { return false; }
static inline bool im_main(struct task_struct *task) { return false; }
static inline bool im_enqueue(struct task_struct *task) { return false; }
static inline bool im_render(struct task_struct *task) { return false; }
static inline bool im_gl(struct task_struct *task) { return false; }
static inline bool im_vk(struct task_struct *task) { return false; }
static inline bool im_hwc(struct task_struct *task) { return false; }
static inline bool im_hwbinder(struct task_struct *task) { return false; }
static inline bool im_binder(struct task_struct *task) { return false; }
static inline bool im_binder_related(struct task_struct *task) { return false; }
static inline bool im_hwui(struct task_struct *task) { return false; }
static inline bool im_unity_worker_thread(struct task_struct *task) { return false; }
static inline bool im_unity_main(struct task_struct *task) { return false; }
static inline bool im_launcher(struct task_struct *task) { return false; }
static inline bool im_hwuiEx(struct task_struct *task) { return false; }
static inline bool im_crender(struct task_struct *task) { return false; }
static inline bool im_bmt(struct task_struct *task) { return false; }
static inline void im_wmi(struct task_struct *task) {}
static inline void im_set_flag(struct task_struct *task, int flag) {}
static inline void im_unset_flag(struct task_struct *task, int flag) {}
static inline void im_reset_flag(struct task_struct *task) {}
static inline void im_to_str(int flag, char* desc, int size) {}
static inline void im_tsk_init_flag(void *ptr) {}
#endif // CONFIG_OPLUS_FEATURE_IM
#endif // __IM_H__