diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 64d1276d5ade..f3c4a0767d4e 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -188,6 +188,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_oem_binder_struct); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_special_task); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_buffer_release); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mglru_should_abort_scan); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_shrink_slab); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_folio_look_around_ref); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_look_around); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_look_around_migrate_folio); diff --git a/include/trace/hooks/vmscan.h b/include/trace/hooks/vmscan.h index 4ec21c7cdff7..66d0f3b279a8 100644 --- a/include/trace/hooks/vmscan.h +++ b/include/trace/hooks/vmscan.h @@ -37,6 +37,9 @@ DECLARE_HOOK(android_vh_mglru_should_abort_scan, DECLARE_HOOK(android_vh_should_memcg_bypass, TP_PROTO(struct mem_cgroup *memcg, int priority, bool *bypass), TP_ARGS(memcg, priority, bypass)); +DECLARE_HOOK(android_vh_do_shrink_slab, + TP_PROTO(struct shrinker *shrinker, long *freeable), + TP_ARGS(shrinker, freeable)); #endif /* _TRACE_HOOK_VMSCAN_H */ /* This part must be outside protection */ #include diff --git a/mm/shrinker.c b/mm/shrinker.c index 4a93fd433689..30ea417ec1a2 100644 --- a/mm/shrinker.c +++ b/mm/shrinker.c @@ -5,6 +5,9 @@ #include #include +#undef CREATE_TRACE_POINTS +#include + #include "internal.h" LIST_HEAD(shrinker_list); @@ -382,6 +385,7 @@ static unsigned long do_shrink_slab(struct shrink_control *shrinkctl, long scanned = 0, next_deferred; freeable = shrinker->count_objects(shrinker, shrinkctl); + trace_android_vh_do_shrink_slab(shrinker, &freeable); if (freeable == 0 || freeable == SHRINK_EMPTY) return freeable;