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:
Peifeng LI
2022-04-29 16:32:33 +08:00
committed by Peifeng Li
parent 5558db2674
commit eb80a7e84f
3 changed files with 25 additions and 1 deletions

View File

@@ -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);
}
/*