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 #include <linux/tracepoint.h> 9 #include <trace/hooks/vendor_hooks.h> 10 /* 11 * Following tracepoints are not exported in tracefs and provide a 12 * mechanism for vendor modules to hook and extend functionality 13 */ 14 #ifdef __GENKSYMS__ 15 struct mutex; 16 struct rt_mutex; 17 struct rw_semaphore; 18 struct task_struct; 19 #else 20 /* struct mutex */ 21 #include <linux/mutex.h> 22 /* struct rt_mutex */ 23 #include <linux/rtmutex.h> 24 /* struct rw_semaphore */ 25 #include <linux/rwsem.h> 26 /* struct task_struct */ 27 #include <linux/sched.h> 28 #endif /* __GENKSYMS__ */ 29 DECLARE_HOOK(android_vh_mutex_wait_start, 30 TP_PROTO(struct mutex *lock), 31 TP_ARGS(lock)); 32 DECLARE_HOOK(android_vh_mutex_wait_finish, 33 TP_PROTO(struct mutex *lock), 34 TP_ARGS(lock)); 35 DECLARE_HOOK(android_vh_mutex_opt_spin_start, 36 TP_PROTO(struct mutex *lock, bool *time_out, int *cnt), 37 TP_ARGS(lock, time_out, cnt)); 38 DECLARE_HOOK(android_vh_mutex_opt_spin_finish, 39 TP_PROTO(struct mutex *lock, bool taken), 40 TP_ARGS(lock, taken)); 41 DECLARE_HOOK(android_vh_mutex_can_spin_on_owner, 42 TP_PROTO(struct mutex *lock, int *retval), 43 TP_ARGS(lock, retval)); 44 45 DECLARE_HOOK(android_vh_rtmutex_wait_start, 46 TP_PROTO(struct rt_mutex *lock), 47 TP_ARGS(lock)); 48 DECLARE_HOOK(android_vh_rtmutex_wait_finish, 49 TP_PROTO(struct rt_mutex *lock), 50 TP_ARGS(lock)); 51 52 DECLARE_HOOK(android_vh_rwsem_read_wait_start, 53 TP_PROTO(struct rw_semaphore *sem), 54 TP_ARGS(sem)); 55 DECLARE_HOOK(android_vh_rwsem_read_wait_finish, 56 TP_PROTO(struct rw_semaphore *sem), 57 TP_ARGS(sem)); 58 DECLARE_HOOK(android_vh_rwsem_write_wait_start, 59 TP_PROTO(struct rw_semaphore *sem), 60 TP_ARGS(sem)); 61 DECLARE_HOOK(android_vh_rwsem_write_wait_finish, 62 TP_PROTO(struct rw_semaphore *sem), 63 TP_ARGS(sem)); 64 DECLARE_HOOK(android_vh_rwsem_opt_spin_start, 65 TP_PROTO(struct rw_semaphore *sem, bool *time_out, int *cnt, bool chk_only), 66 TP_ARGS(sem, time_out, cnt, chk_only)); 67 DECLARE_HOOK(android_vh_rwsem_opt_spin_finish, 68 TP_PROTO(struct rw_semaphore *sem, bool taken, bool wlock), 69 TP_ARGS(sem, taken, wlock)); 70 DECLARE_HOOK(android_vh_rwsem_can_spin_on_owner, 71 TP_PROTO(struct rw_semaphore *sem, bool *ret, bool wlock), 72 TP_ARGS(sem, ret, wlock)); 73 74 DECLARE_HOOK(android_vh_sched_show_task, 75 TP_PROTO(struct task_struct *task), 76 TP_ARGS(task)); 77 DECLARE_HOOK(android_vh_alter_mutex_list_add, 78 TP_PROTO(struct mutex *lock, 79 struct mutex_waiter *waiter, 80 struct list_head *list, 81 bool *already_on_list), 82 TP_ARGS(lock, waiter, list, already_on_list)); 83 DECLARE_HOOK(android_vh_mutex_unlock_slowpath, 84 TP_PROTO(struct mutex *lock), 85 TP_ARGS(lock)); 86 DECLARE_HOOK(android_vh_mutex_unlock_slowpath_end, 87 TP_PROTO(struct mutex *lock, struct task_struct *next), 88 TP_ARGS(lock, next)); 89 DECLARE_HOOK(android_vh_record_mutex_lock_starttime, 90 TP_PROTO(struct task_struct *tsk, unsigned long settime_jiffies), 91 TP_ARGS(tsk, settime_jiffies)); 92 DECLARE_HOOK(android_vh_record_rtmutex_lock_starttime, 93 TP_PROTO(struct task_struct *tsk, unsigned long settime_jiffies), 94 TP_ARGS(tsk, settime_jiffies)); 95 DECLARE_HOOK(android_vh_record_rwsem_lock_starttime, 96 TP_PROTO(struct task_struct *tsk, unsigned long settime_jiffies), 97 TP_ARGS(tsk, settime_jiffies)); 98 DECLARE_HOOK(android_vh_record_pcpu_rwsem_starttime, 99 TP_PROTO(struct task_struct *tsk, unsigned long settime_jiffies), 100 TP_ARGS(tsk, settime_jiffies)); 101 102 struct percpu_rw_semaphore; 103 DECLARE_HOOK(android_vh_percpu_rwsem_wq_add, 104 TP_PROTO(struct percpu_rw_semaphore *sem, bool reader), 105 TP_ARGS(sem, reader)); 106 107 DECLARE_HOOK(android_vh_exit_check, 108 TP_PROTO(struct task_struct *tsk, long code, int group_dead), 109 TP_ARGS(tsk, code, group_dead)); 110 /* macro versions of hooks are no longer required */ 111 112 #endif /* _TRACE_HOOK_DTASK_H */ 113 /* This part must be outside protection */ 114 #include <trace/define_trace.h> 115