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:
@@ -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);
|
||||||
|
@@ -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 */
|
||||||
|
@@ -2607,8 +2607,10 @@ 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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user