#ifndef _FTT_H_ #define _FTT_H_ #define FTT_MAX_SCHED 5 enum DYNAMIC_FTT_TYPE { DYNAMIC_FTT_BINDER = 0, DYNAMIC_FTT_RWSEM, DYNAMIC_FTT_MUTEX, DYNAMIC_FTT_MAX, }; struct rq; struct cfs_rq; struct sched_entity; struct task_struct; struct ftt_stat { int ftt_cnt; int pick_ftt; int wrong; int dyn_cnt; }; extern struct ftt_stat fttstat; extern int is_ftt(struct sched_entity *se); extern u64 ftt_vruntime(struct cfs_rq *cfs_rq); extern int is_ftt_vruntime(struct cfs_rq *cfs_rq, struct sched_entity *se); extern void __ftt_init_vruntime(struct cfs_rq *cfs_rq, struct sched_entity *se); extern void ftt_init_vruntime(struct cfs_rq *cfs_rq, struct sched_entity *se); extern void __ftt_normalize_vruntime(struct cfs_rq *cfs_rq, struct sched_entity *se); extern void init_task_ftt_info(struct task_struct *p); extern void ftt_enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se); extern void ftt_dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se); extern void ftt_mark(struct task_struct *task); extern void ftt_unmark(struct task_struct *task); extern int is_dyn_ftt(struct sched_entity *se, int type); extern int dynamic_ftt_dequeue(struct task_struct *task, int type); extern int dynamic_ftt_enqueue(struct task_struct *task, int type); extern void ftt_set_vruntime(struct task_struct *task, int set); #endif