From 239dbc2518d8149fd2c889d12487c85a2b415b2a Mon Sep 17 00:00:00 2001 From: chenweitao Date: Sun, 18 Feb 2024 11:32:35 +0800 Subject: [PATCH] ANDROID: vendor_hooks: Add hook for trace_android_vh_copy_process Add hook for trace_android_vh_copy_process, which gives the vendor a chance to monitor the total thread count of the system and the thread count under a particular process Bug: 325765508 Bug: 327977501 Change-Id: Ibeb8aa571d44997ac10623321cd00d1686bde033 Signed-off-by: chenweitao --- include/trace/hooks/sched.h | 5 +++++ kernel/fork.c | 1 + kernel/sched/vendor_hooks.c | 1 + 3 files changed, 7 insertions(+) diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 4037082dbebd..facee37cfacd 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -276,6 +276,11 @@ DECLARE_HOOK(android_vh_free_task, TP_PROTO(struct task_struct *p), TP_ARGS(p)); +DECLARE_HOOK(android_vh_copy_process, + TP_PROTO(struct task_struct *p, int nr_threads, int current_signal_nr_threads), + TP_ARGS(p, nr_threads, current_signal_nr_threads)); + + DECLARE_HOOK(android_vh_irqtime_account_process_tick, TP_PROTO(struct task_struct *p, struct rq *rq, int user_tick, int ticks), TP_ARGS(p, rq, user_tick, ticks)); diff --git a/kernel/fork.c b/kernel/fork.c index 1109a10c5ccd..415be3b90707 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -2590,6 +2590,7 @@ static __latent_entropy struct task_struct *copy_process( attach_pid(p, PIDTYPE_PID); nr_threads++; } + trace_android_vh_copy_process(current, nr_threads, current->signal->nr_threads); total_forks++; hlist_del_init(&delayed.node); spin_unlock(¤t->sighand->siglock); diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index b65262774f73..5d695121cc05 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -46,6 +46,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_pick_next_entity); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_cpus_allowed_by_task); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_task); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_copy_process); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_uclamp_eff_get); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_after_enqueue_task); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_after_dequeue_task);