ANDROID: vendor_hooks: Add hooks for rwsem
we want to record tasks who will own sem, so we need to add some hook in rwsem.c Bug: 230829284 Change-Id: Ide66540aa38d6058d8aad5f94f4403be991078a4 Signed-off-by: Peifeng Li <lipeifeng@oppo.com>
This commit is contained in:
parent
5558db2674
commit
eb80a7e84f
@ -113,6 +113,11 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_read_wait_start);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_read_wait_finish);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_start);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_finish);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_set_owner);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_set_reader_owned);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_mark_wake_readers);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_up_read_end);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_up_write_end);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_show_task);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shmem_alloc_page);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_enter);
|
||||
|
@ -29,7 +29,21 @@ DECLARE_HOOK(android_vh_alter_rwsem_list_add,
|
||||
DECLARE_HOOK(android_vh_rwsem_wake_finish,
|
||||
TP_PROTO(struct rw_semaphore *sem),
|
||||
TP_ARGS(sem));
|
||||
|
||||
DECLARE_HOOK(android_vh_rwsem_set_owner,
|
||||
TP_PROTO(struct rw_semaphore *sem),
|
||||
TP_ARGS(sem));
|
||||
DECLARE_HOOK(android_vh_rwsem_set_reader_owned,
|
||||
TP_PROTO(struct rw_semaphore *sem),
|
||||
TP_ARGS(sem));
|
||||
DECLARE_HOOK(android_vh_rwsem_up_write_end,
|
||||
TP_PROTO(struct rw_semaphore *sem),
|
||||
TP_ARGS(sem));
|
||||
DECLARE_HOOK(android_vh_rwsem_up_read_end,
|
||||
TP_PROTO(struct rw_semaphore *sem),
|
||||
TP_ARGS(sem));
|
||||
DECLARE_HOOK(android_vh_rwsem_mark_wake_readers,
|
||||
TP_PROTO(struct rw_semaphore *sem, struct rwsem_waiter *waiter),
|
||||
TP_ARGS(sem, waiter));
|
||||
/* macro versions of hooks are no longer required */
|
||||
|
||||
#endif /* _TRACE_HOOK_RWSEM_H */
|
||||
|
@ -176,6 +176,7 @@
|
||||
static inline void rwsem_set_owner(struct rw_semaphore *sem)
|
||||
{
|
||||
atomic_long_set(&sem->owner, (long)current);
|
||||
trace_android_vh_rwsem_set_owner(sem);
|
||||
}
|
||||
|
||||
static inline void rwsem_clear_owner(struct rw_semaphore *sem)
|
||||
@ -213,6 +214,7 @@ static inline void __rwsem_set_reader_owned(struct rw_semaphore *sem,
|
||||
static inline void rwsem_set_reader_owned(struct rw_semaphore *sem)
|
||||
{
|
||||
__rwsem_set_reader_owned(sem, current);
|
||||
trace_android_vh_rwsem_set_reader_owned(sem);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -496,6 +498,7 @@ static void rwsem_mark_wake(struct rw_semaphore *sem,
|
||||
woken++;
|
||||
list_move_tail(&waiter->list, &wlist);
|
||||
|
||||
trace_android_vh_rwsem_mark_wake_readers(sem, waiter);
|
||||
/*
|
||||
* Limit # of readers that can be woken up per wakeup call.
|
||||
*/
|
||||
@ -1460,6 +1463,7 @@ static inline void __up_read(struct rw_semaphore *sem)
|
||||
clear_wr_nonspinnable(sem);
|
||||
rwsem_wake(sem, tmp);
|
||||
}
|
||||
trace_android_vh_rwsem_up_read_end(sem);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1481,6 +1485,7 @@ static inline void __up_write(struct rw_semaphore *sem)
|
||||
tmp = atomic_long_fetch_add_release(-RWSEM_WRITER_LOCKED, &sem->count);
|
||||
if (unlikely(tmp & RWSEM_FLAG_WAITERS))
|
||||
rwsem_wake(sem, tmp);
|
||||
trace_android_vh_rwsem_up_write_end(sem);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user