ANDROID: vendor_hooks: Add hooks for binder proc transaction
When servicemanager process added service proxy from other process register the service, we want to know the matching relation between handle in the process and service name. When binder transaction happened, We want to know what process calls what method on what service. Bug: 186604985 Signed-off-by: zhengding chen <chenzhengding@oppo.com> Change-Id: I813d1cde10294d8665f899f7fef0d444ec1f1f5e
This commit is contained in:
parent
577f73412f
commit
35014985c2
3 changed files with 19 additions and 0 deletions
|
|
@ -1202,6 +1202,7 @@ static struct binder_ref *binder_get_ref_for_node_olocked(
|
|||
"%d new ref %d desc %d for node %d\n",
|
||||
proc->pid, new_ref->data.debug_id, new_ref->data.desc,
|
||||
node->debug_id);
|
||||
trace_android_vh_binder_new_ref(proc->tsk, new_ref->data.desc, new_ref->node->debug_id);
|
||||
binder_node_unlock(node);
|
||||
return new_ref;
|
||||
}
|
||||
|
|
@ -1369,6 +1370,7 @@ err_no_ref:
|
|||
*/
|
||||
static void binder_free_ref(struct binder_ref *ref)
|
||||
{
|
||||
trace_android_vh_binder_del_ref(ref->proc ? ref->proc->tsk : 0, ref->data.desc);
|
||||
if (ref->node)
|
||||
binder_free_node(ref->node);
|
||||
kfree(ref->death);
|
||||
|
|
@ -2502,6 +2504,9 @@ static int binder_proc_transaction(struct binder_transaction *t,
|
|||
if (!thread && !pending_async)
|
||||
thread = binder_select_thread_ilocked(proc);
|
||||
|
||||
trace_android_vh_binder_proc_transaction(current, proc->tsk,
|
||||
thread ? thread->task : 0, node->debug_id, t->code, pending_async);
|
||||
|
||||
if (thread) {
|
||||
binder_transaction_priority(thread->task, t, node_prio,
|
||||
node->inherit_rt);
|
||||
|
|
|
|||
|
|
@ -240,6 +240,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_alloc_new_buf_locked);
|
|||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_reply);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_trans);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_preset);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_proc_transaction);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_new_ref);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_del_ref);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_post_init_entity_util_avg);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_get_timer);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_adj_current_limit);
|
||||
|
|
|
|||
|
|
@ -54,6 +54,17 @@ DECLARE_HOOK(android_vh_binder_trans,
|
|||
DECLARE_HOOK(android_vh_binder_preset,
|
||||
TP_PROTO(struct hlist_head *hhead, struct mutex *lock),
|
||||
TP_ARGS(hhead, lock));
|
||||
DECLARE_HOOK(android_vh_binder_proc_transaction,
|
||||
TP_PROTO(struct task_struct *caller_task, struct task_struct *binder_proc_task,
|
||||
struct task_struct *binder_th_task, int node_debug_id,
|
||||
unsigned int code, bool pending_async),
|
||||
TP_ARGS(caller_task, binder_proc_task, binder_th_task, node_debug_id, code, pending_async));
|
||||
DECLARE_HOOK(android_vh_binder_new_ref,
|
||||
TP_PROTO(struct task_struct *proc, uint32_t ref_desc, int node_debug_id),
|
||||
TP_ARGS(proc, ref_desc, node_debug_id));
|
||||
DECLARE_HOOK(android_vh_binder_del_ref,
|
||||
TP_PROTO(struct task_struct *proc, uint32_t ref_desc),
|
||||
TP_ARGS(proc, ref_desc));
|
||||
|
||||
/* macro versions of hooks are no longer required */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue