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