ANDROID: vendor_hooks: Add hooks for futex

We want to use this hook to record the sleeping time due to Futex

Bug: 210947226

Signed-off-by: Liujie Xie <xieliujie@oppo.com>
Change-Id: I637f889dce42937116d10979e0c40fddf96cd1a2
This commit is contained in:
Liujie Xie
2021-12-16 17:07:54 +08:00
parent 84fc3abca0
commit a7ab784f60
3 changed files with 8 additions and 1 deletions

View File

@@ -110,6 +110,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_finished); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_finished);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_rwsem_list_add); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_rwsem_list_add);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_futex_plist_add); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_futex_plist_add);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_sleep_start);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_wait_start); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_wait_start);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_wait_finish); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_wait_finish);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rtmutex_wait_start); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rtmutex_wait_start);

View File

@@ -18,6 +18,10 @@ DECLARE_HOOK(android_vh_alter_futex_plist_add,
bool *already_on_hb), bool *already_on_hb),
TP_ARGS(node, head, already_on_hb)); TP_ARGS(node, head, already_on_hb));
DECLARE_HOOK(android_vh_futex_sleep_start,
TP_PROTO(struct task_struct *p),
TP_ARGS(p));
/* macro versions of hooks are no longer required */ /* macro versions of hooks are no longer required */
#endif /* _TRACE_HOOK_FUTEX_H */ #endif /* _TRACE_HOOK_FUTEX_H */

View File

@@ -2607,9 +2607,11 @@ static void futex_wait_queue_me(struct futex_hash_bucket *hb, struct futex_q *q,
* flagged for rescheduling. Only call schedule if there * flagged for rescheduling. Only call schedule if there
* is no timeout, or if it has yet to expire. * is no timeout, or if it has yet to expire.
*/ */
if (!timeout || timeout->task) if (!timeout || timeout->task) {
trace_android_vh_futex_sleep_start(current);
freezable_schedule(); freezable_schedule();
} }
}
__set_current_state(TASK_RUNNING); __set_current_state(TASK_RUNNING);
} }