Files
android_kernel_xiaomi_sm8450/include/trace/hooks/sched.h
Pavankumar Kondeti a038be9b2c ANDROID: sched: Update android_rvh_check_preempt_wakeup hook
android_rvh_check_preempt_wakeup hook is in place to allow vendor
modules to force the running task preemption by the waking task.
Update the tracepoint to accept another input to not preempting
the current running task. The hook is moved further down so that
it can be updated to pass the sched_entity structure corresponding
to waking and running tasks in the next patch.

Bug: 184575210
Change-Id: Id4f45ba2819802636b6b86ed34c124771d0d69eb
Signed-off-by: Pavankumar Kondeti <quic_pkondeti@quicinc.com>
2021-04-09 21:09:03 -07:00

302 lines
10 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM sched
#define TRACE_INCLUDE_PATH trace/hooks
#if !defined(_TRACE_HOOK_SCHED_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_HOOK_SCHED_H
#include <linux/tracepoint.h>
#include <trace/hooks/vendor_hooks.h>
/*
* Following tracepoints are not exported in tracefs and provide a
* mechanism for vendor modules to hook and extend functionality
*/
struct task_struct;
DECLARE_RESTRICTED_HOOK(android_rvh_select_task_rq_fair,
TP_PROTO(struct task_struct *p, int prev_cpu, int sd_flag, int wake_flags, int *new_cpu),
TP_ARGS(p, prev_cpu, sd_flag, wake_flags, new_cpu), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_select_task_rq_rt,
TP_PROTO(struct task_struct *p, int prev_cpu, int sd_flag, int wake_flags, int *new_cpu),
TP_ARGS(p, prev_cpu, sd_flag, wake_flags, new_cpu), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_select_fallback_rq,
TP_PROTO(int cpu, struct task_struct *p, int *new_cpu),
TP_ARGS(cpu, p, new_cpu), 1);
struct rq;
DECLARE_HOOK(android_vh_scheduler_tick,
TP_PROTO(struct rq *rq),
TP_ARGS(rq));
DECLARE_RESTRICTED_HOOK(android_rvh_enqueue_task,
TP_PROTO(struct rq *rq, struct task_struct *p, int flags),
TP_ARGS(rq, p, flags), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_dequeue_task,
TP_PROTO(struct rq *rq, struct task_struct *p, int flags),
TP_ARGS(rq, p, flags), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_can_migrate_task,
TP_PROTO(struct task_struct *p, int dst_cpu, int *can_migrate),
TP_ARGS(p, dst_cpu, can_migrate), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_find_lowest_rq,
TP_PROTO(struct task_struct *p, struct cpumask *local_cpu_mask,
int ret, int *lowest_cpu),
TP_ARGS(p, local_cpu_mask, ret, lowest_cpu), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_prepare_prio_fork,
TP_PROTO(struct task_struct *p),
TP_ARGS(p), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_finish_prio_fork,
TP_PROTO(struct task_struct *p),
TP_ARGS(p), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_rtmutex_prepare_setprio,
TP_PROTO(struct task_struct *p, struct task_struct *pi_task),
TP_ARGS(p, pi_task), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_set_user_nice,
TP_PROTO(struct task_struct *p, long *nice, bool *allowed),
TP_ARGS(p, nice, allowed), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_setscheduler,
TP_PROTO(struct task_struct *p),
TP_ARGS(p), 1);
struct sched_group;
DECLARE_RESTRICTED_HOOK(android_rvh_find_busiest_group,
TP_PROTO(struct sched_group *busiest, struct rq *dst_rq, int *out_balance),
TP_ARGS(busiest, dst_rq, out_balance), 1);
DECLARE_HOOK(android_vh_dump_throttled_rt_tasks,
TP_PROTO(int cpu, u64 clock, ktime_t rt_period, u64 rt_runtime,
s64 rt_period_timer_expires),
TP_ARGS(cpu, clock, rt_period, rt_runtime, rt_period_timer_expires));
DECLARE_HOOK(android_vh_jiffies_update,
TP_PROTO(void *unused),
TP_ARGS(unused));
struct rq_flags;
DECLARE_RESTRICTED_HOOK(android_rvh_sched_newidle_balance,
TP_PROTO(struct rq *this_rq, struct rq_flags *rf,
int *pulled_task, int *done),
TP_ARGS(this_rq, rf, pulled_task, done), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_sched_nohz_balancer_kick,
TP_PROTO(struct rq *rq, unsigned int *flags, int *done),
TP_ARGS(rq, flags, done), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_sched_rebalance_domains,
TP_PROTO(struct rq *rq, int *continue_balancing),
TP_ARGS(rq, continue_balancing), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_find_busiest_queue,
TP_PROTO(int dst_cpu, struct sched_group *group,
struct cpumask *env_cpus, struct rq **busiest,
int *done),
TP_ARGS(dst_cpu, group, env_cpus, busiest, done), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_migrate_queued_task,
TP_PROTO(struct rq *rq, struct rq_flags *rf,
struct task_struct *p, int new_cpu,
int *detached),
TP_ARGS(rq, rf, p, new_cpu, detached), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_resume_cpus,
TP_PROTO(struct cpumask *cpus, int *err),
TP_ARGS(cpus, err), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_find_energy_efficient_cpu,
TP_PROTO(struct task_struct *p, int prev_cpu, int sync, int *new_cpu),
TP_ARGS(p, prev_cpu, sync, new_cpu), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_set_iowait,
TP_PROTO(struct task_struct *p, int *should_iowait_boost),
TP_ARGS(p, should_iowait_boost), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_cpu_overutilized,
TP_PROTO(int cpu, int *overutilized),
TP_ARGS(cpu, overutilized), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_sched_setaffinity,
TP_PROTO(struct task_struct *p, const struct cpumask *in_mask, int *retval),
TP_ARGS(p, in_mask, retval), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_update_cpus_allowed,
TP_PROTO(struct task_struct *p, cpumask_var_t cpus_requested,
const struct cpumask *new_mask, int *ret),
TP_ARGS(p, cpus_requested, new_mask, ret), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_set_task_cpu,
TP_PROTO(struct task_struct *p, unsigned int new_cpu),
TP_ARGS(p, new_cpu), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_try_to_wake_up,
TP_PROTO(struct task_struct *p),
TP_ARGS(p), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_try_to_wake_up_success,
TP_PROTO(struct task_struct *p),
TP_ARGS(p), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_sched_fork,
TP_PROTO(struct task_struct *p),
TP_ARGS(p), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_wake_up_new_task,
TP_PROTO(struct task_struct *p),
TP_ARGS(p), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_new_task_stats,
TP_PROTO(struct task_struct *p),
TP_ARGS(p), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_flush_task,
TP_PROTO(struct task_struct *prev),
TP_ARGS(prev), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_tick_entry,
TP_PROTO(struct rq *rq),
TP_ARGS(rq), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_schedule,
TP_PROTO(struct task_struct *prev, struct task_struct *next, struct rq *rq),
TP_ARGS(prev, next, rq), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_sched_cpu_starting,
TP_PROTO(int cpu),
TP_ARGS(cpu), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_sched_cpu_dying,
TP_PROTO(int cpu),
TP_ARGS(cpu), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_account_irq,
TP_PROTO(struct task_struct *curr, int cpu, s64 delta),
TP_ARGS(curr, cpu, delta), 1);
struct sched_entity;
DECLARE_RESTRICTED_HOOK(android_rvh_place_entity,
TP_PROTO(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial, u64 vruntime),
TP_ARGS(cfs_rq, se, initial, vruntime), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_build_perf_domains,
TP_PROTO(bool *eas_check),
TP_ARGS(eas_check), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_update_cpu_capacity,
TP_PROTO(int cpu, unsigned long *capacity),
TP_ARGS(cpu, capacity), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_update_misfit_status,
TP_PROTO(struct task_struct *p, struct rq *rq, bool *need_update),
TP_ARGS(p, rq, need_update), 1);
struct cgroup_taskset;
DECLARE_RESTRICTED_HOOK(android_rvh_cpu_cgroup_attach,
TP_PROTO(struct cgroup_taskset *tset),
TP_ARGS(tset), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_cpu_cgroup_can_attach,
TP_PROTO(struct cgroup_taskset *tset, int *retval),
TP_ARGS(tset, retval), 1);
struct cgroup_subsys_state;
DECLARE_RESTRICTED_HOOK(android_rvh_cpu_cgroup_online,
TP_PROTO(struct cgroup_subsys_state *css),
TP_ARGS(css), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_sched_fork_init,
TP_PROTO(struct task_struct *p),
TP_ARGS(p), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_ttwu_cond,
TP_PROTO(bool *cond),
TP_ARGS(cond), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_schedule_bug,
TP_PROTO(struct task_struct *p),
TP_ARGS(p), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_sched_exec,
TP_PROTO(bool *cond),
TP_ARGS(cond), 1);
DECLARE_HOOK(android_vh_map_util_freq,
TP_PROTO(unsigned long util, unsigned long freq,
unsigned long cap, unsigned long *next_freq),
TP_ARGS(util, freq, cap, next_freq));
struct em_perf_domain;
DECLARE_HOOK(android_vh_em_cpu_energy,
TP_PROTO(struct em_perf_domain *pd,
unsigned long max_util, unsigned long sum_util,
unsigned long *energy),
TP_ARGS(pd, max_util, sum_util, energy));
DECLARE_RESTRICTED_HOOK(android_rvh_sched_balance_rt,
TP_PROTO(struct rq *rq, struct task_struct *p, int *done),
TP_ARGS(rq, p, done), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_dequeue_task_idle,
TP_PROTO(struct task_struct *p),
TP_ARGS(p), 1);
struct cfs_rq;
DECLARE_RESTRICTED_HOOK(android_rvh_pick_next_entity,
TP_PROTO(struct cfs_rq *cfs_rq, struct sched_entity *curr,
struct sched_entity **se),
TP_ARGS(cfs_rq, curr, se), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_check_preempt_wakeup,
TP_PROTO(struct rq *rq, struct task_struct *p, bool *preempt, bool *nopreempt),
TP_ARGS(rq, p, preempt, nopreempt), 1);
DECLARE_HOOK(android_vh_do_wake_up_sync,
TP_PROTO(struct wait_queue_head *wq_head, int *done),
TP_ARGS(wq_head, done));
DECLARE_HOOK(android_vh_set_wake_flags,
TP_PROTO(int *wake_flags, unsigned int *mode),
TP_ARGS(wake_flags, mode));
enum uclamp_id;
struct uclamp_se;
DECLARE_RESTRICTED_HOOK(android_rvh_uclamp_eff_get,
TP_PROTO(struct task_struct *p, enum uclamp_id clamp_id,
struct uclamp_se *uclamp_max, struct uclamp_se *uclamp_eff, int *ret),
TP_ARGS(p, clamp_id, uclamp_max, uclamp_eff, ret), 1);
DECLARE_HOOK(android_vh_build_sched_domains,
TP_PROTO(bool has_asym),
TP_ARGS(has_asym));
DECLARE_RESTRICTED_HOOK(android_rvh_check_preempt_tick,
TP_PROTO(struct task_struct *p, unsigned long *ideal_runtime, bool *skip_preempt),
TP_ARGS(p, ideal_runtime, skip_preempt), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_check_preempt_wakeup_ignore,
TP_PROTO(struct task_struct *p, bool *ignore),
TP_ARGS(p, ignore), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_replace_next_task_fair,
TP_PROTO(struct rq *rq, struct task_struct **p, struct sched_entity **se, bool *repick, bool simple),
TP_ARGS(rq, p, se, repick, simple), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_util_est_update,
TP_PROTO(struct cfs_rq *cfs_rq, struct task_struct *p, bool task_sleep, int *ret),
TP_ARGS(cfs_rq, p, task_sleep, ret), 1);
DECLARE_HOOK(android_vh_account_task_time,
TP_PROTO(struct task_struct *p, struct rq *rq, int user_tick),
TP_ARGS(p, rq, user_tick));
DECLARE_RESTRICTED_HOOK(android_rvh_post_init_entity_util_avg,
TP_PROTO(struct sched_entity *se),
TP_ARGS(se), 1);
/* macro versions of hooks are no longer required */
#endif /* _TRACE_HOOK_SCHED_H */
/* This part must be outside protection */
#include <trace/define_trace.h>