• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM dtask
4 #define TRACE_INCLUDE_PATH trace/hooks
5 
6 #if !defined(_TRACE_HOOK_DTASK_H) || defined(TRACE_HEADER_MULTI_READ)
7 #define _TRACE_HOOK_DTASK_H
8 
9 #include <trace/hooks/vendor_hooks.h>
10 
11 /*
12  * Following tracepoints are not exported in tracefs and provide a
13  * mechanism for vendor modules to hook and extend functionality
14  */
15 
16 struct mutex;
17 struct rt_mutex;
18 struct rt_mutex_base;
19 struct rw_semaphore;
20 struct task_struct;
21 struct percpu_rw_semaphore;
22 
23 DECLARE_HOOK(android_vh_mutex_wait_start,
24 	TP_PROTO(struct mutex *lock),
25 	TP_ARGS(lock));
26 DECLARE_HOOK(android_vh_mutex_wait_finish,
27 	TP_PROTO(struct mutex *lock),
28 	TP_ARGS(lock));
29 DECLARE_HOOK(android_vh_mutex_init,
30 	TP_PROTO(struct mutex *lock),
31 	TP_ARGS(lock));
32 DECLARE_HOOK(android_vh_mutex_opt_spin_start,
33 	TP_PROTO(struct mutex *lock, bool *time_out, int *cnt),
34 	TP_ARGS(lock, time_out, cnt));
35 DECLARE_HOOK(android_vh_mutex_opt_spin_finish,
36 	TP_PROTO(struct mutex *lock, bool taken),
37 	TP_ARGS(lock, taken));
38 DECLARE_HOOK(android_vh_mutex_can_spin_on_owner,
39 	TP_PROTO(struct mutex *lock, int *retval),
40 	TP_ARGS(lock, retval));
41 
42 DECLARE_HOOK(android_vh_rtmutex_wait_start,
43 	TP_PROTO(struct rt_mutex_base *lock),
44 	TP_ARGS(lock));
45 DECLARE_HOOK(android_vh_rtmutex_wait_finish,
46 	TP_PROTO(struct rt_mutex_base *lock),
47 	TP_ARGS(lock));
48 
49 DECLARE_HOOK(android_vh_rwsem_read_wait_start,
50 	TP_PROTO(struct rw_semaphore *sem),
51 	TP_ARGS(sem));
52 DECLARE_HOOK(android_vh_rwsem_read_wait_finish,
53 	TP_PROTO(struct rw_semaphore *sem),
54 	TP_ARGS(sem));
55 DECLARE_HOOK(android_vh_rwsem_write_wait_start,
56 	TP_PROTO(struct rw_semaphore *sem),
57 	TP_ARGS(sem));
58 DECLARE_HOOK(android_vh_rwsem_write_wait_finish,
59 	TP_PROTO(struct rw_semaphore *sem),
60 	TP_ARGS(sem));
61 DECLARE_HOOK(android_vh_rwsem_opt_spin_start,
62 	TP_PROTO(struct rw_semaphore *sem, bool *time_out, int *cnt, bool chk_only),
63 	TP_ARGS(sem, time_out, cnt, chk_only));
64 DECLARE_HOOK(android_vh_rwsem_opt_spin_finish,
65 	TP_PROTO(struct rw_semaphore *sem, bool taken),
66 	TP_ARGS(sem, taken));
67 DECLARE_HOOK(android_vh_rwsem_can_spin_on_owner,
68 	TP_PROTO(struct rw_semaphore *sem, bool *ret),
69 	TP_ARGS(sem, ret));
70 
71 struct device;
72 DECLARE_HOOK(android_vh_dpm_wait_start,
73 	TP_PROTO(struct device *dev),
74 	TP_ARGS(dev));
75 DECLARE_HOOK(android_vh_dpm_wait_finish,
76 	TP_PROTO(struct device *dev),
77 	TP_ARGS(dev));
78 
79 struct irq_desc;
80 DECLARE_HOOK(android_vh_sync_irq_wait_start,
81 	TP_PROTO(struct irq_desc *desc),
82 	TP_ARGS(desc));
83 DECLARE_HOOK(android_vh_sync_irq_wait_finish,
84 	TP_PROTO(struct irq_desc *desc),
85 	TP_ARGS(desc));
86 
87 struct workqueue_struct;
88 DECLARE_HOOK(android_vh_flush_wq_wait_start,
89 	TP_PROTO(struct workqueue_struct *wq),
90 	TP_ARGS(wq));
91 DECLARE_HOOK(android_vh_flush_wq_wait_finish,
92 	TP_PROTO(struct workqueue_struct *wq),
93 	TP_ARGS(wq));
94 
95 struct work_struct;
96 DECLARE_HOOK(android_vh_flush_work_wait_start,
97 	TP_PROTO(struct work_struct *work),
98 	TP_ARGS(work));
99 DECLARE_HOOK(android_vh_flush_work_wait_finish,
100 	TP_PROTO(struct work_struct *work),
101 	TP_ARGS(work));
102 
103 DECLARE_HOOK(android_vh_sched_show_task,
104 	TP_PROTO(struct task_struct *task),
105 	TP_ARGS(task));
106 DECLARE_HOOK(android_vh_percpu_rwsem_wq_add,
107 	TP_PROTO(struct percpu_rw_semaphore *sem, bool reader),
108 	TP_ARGS(sem, reader));
109 DECLARE_HOOK(android_vh_percpu_rwsem_down_read,
110 	TP_PROTO(struct percpu_rw_semaphore *sem, bool try, bool *ret),
111 	TP_ARGS(sem, try, ret));
112 DECLARE_HOOK(android_vh_percpu_rwsem_up_write,
113 	TP_PROTO(struct percpu_rw_semaphore *sem),
114 	TP_ARGS(sem));
115 DECLARE_RESTRICTED_HOOK(android_rvh_percpu_rwsem_wait_complete,
116 	TP_PROTO(struct percpu_rw_semaphore *sem, long state, bool *complete),
117 	TP_ARGS(sem, state, complete), 1);
118 
119 struct mutex_waiter;
120 DECLARE_HOOK(android_vh_alter_mutex_list_add,
121 	TP_PROTO(struct mutex *lock,
122 		struct mutex_waiter *waiter,
123 		struct list_head *list,
124 		bool *already_on_list),
125 	TP_ARGS(lock, waiter, list, already_on_list));
126 DECLARE_HOOK(android_vh_mutex_unlock_slowpath,
127 	TP_PROTO(struct mutex *lock),
128 	TP_ARGS(lock));
129 DECLARE_HOOK(android_vh_mutex_unlock_slowpath_before_wakeq,
130 	TP_PROTO(struct mutex *lock),
131 	TP_ARGS(lock));
132 
133 DECLARE_HOOK(android_vh_record_mutex_lock_starttime,
134 	TP_PROTO(struct mutex *lock, unsigned long settime_jiffies),
135 	TP_ARGS(lock, settime_jiffies));
136 DECLARE_HOOK(android_vh_record_rtmutex_lock_starttime,
137 	TP_PROTO(struct rt_mutex *lock, unsigned long settime_jiffies),
138 	TP_ARGS(lock, settime_jiffies));
139 DECLARE_HOOK(android_vh_record_rwsem_lock_starttime,
140 	TP_PROTO(struct rw_semaphore *sem, unsigned long settime_jiffies),
141 	TP_ARGS(sem, settime_jiffies));
142 DECLARE_HOOK(android_vh_record_pcpu_rwsem_starttime,
143 	TP_PROTO(struct percpu_rw_semaphore *sem, unsigned long settime_jiffies),
144 	TP_ARGS(sem, settime_jiffies));
145 
146 DECLARE_HOOK(android_vh_exit_check,
147 	TP_PROTO(struct task_struct *p),
148 	TP_ARGS(p));
149 
150 DECLARE_RESTRICTED_HOOK(android_rvh_dpm_prepare,
151 	TP_PROTO(int flag),
152 	TP_ARGS(flag), 1);
153 
154 DECLARE_HOOK(android_vh_set_tsk_need_resched_lazy,
155 	TP_PROTO(struct task_struct *p, struct rq *rq, int *need_lazy),
156 	TP_ARGS(p, rq, need_lazy));
157 #endif /* _TRACE_HOOK_DTASK_H */
158 
159 /* This part must be outside protection */
160 #include <trace/define_trace.h>
161