mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
ANDROID: vendor_hook: add hooks in dm_bufio.c
1. android_vh_dm_bufio_shrink_scan_bypass To adjust dm_bufio-buffer shrinker's policy in some cases. 2. cleanup_old_buffers_bypass To adjust the policy of dm_bufio-buffer periodic eviction in some cases. Bug: 281467813 Signed-off-by: Peifeng Li <lipeifeng@oppo.com> Change-Id: I29a9d91d18d2e279170533db83b59cfc3b17ebe2
This commit is contained in:
@@ -154,6 +154,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_qos_update_request);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_qos_remove_request);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_balance_anon_file_reclaim);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_show_max_freq);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dm_bufio_shrink_scan_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cleanup_old_buffers_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_insert);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_node_delete);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_node_replace);
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
#include <linux/stacktrace.h>
|
||||
#include <linux/jump_label.h>
|
||||
|
||||
#include <trace/hooks/mm.h>
|
||||
|
||||
#define DM_MSG_PREFIX "bufio"
|
||||
|
||||
/*
|
||||
@@ -1702,6 +1704,13 @@ static void shrink_work(struct work_struct *w)
|
||||
static unsigned long dm_bufio_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
|
||||
{
|
||||
struct dm_bufio_client *c;
|
||||
bool bypass = false;
|
||||
|
||||
trace_android_vh_dm_bufio_shrink_scan_bypass(
|
||||
dm_bufio_current_allocated,
|
||||
&bypass);
|
||||
if (bypass)
|
||||
return 0;
|
||||
|
||||
c = container_of(shrink, struct dm_bufio_client, shrinker);
|
||||
atomic_long_add(sc->nr_to_scan, &c->need_shrink);
|
||||
@@ -2040,6 +2049,14 @@ static void cleanup_old_buffers(void)
|
||||
{
|
||||
unsigned long max_age_hz = get_max_age_hz();
|
||||
struct dm_bufio_client *c;
|
||||
bool bypass = false;
|
||||
|
||||
trace_android_vh_cleanup_old_buffers_bypass(
|
||||
dm_bufio_current_allocated,
|
||||
&max_age_hz,
|
||||
&bypass);
|
||||
if (bypass)
|
||||
return;
|
||||
|
||||
mutex_lock(&dm_bufio_clients_lock);
|
||||
|
||||
|
||||
@@ -23,6 +23,14 @@ DECLARE_RESTRICTED_HOOK(android_rvh_set_gfp_zone_flags,
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_set_readahead_gfp_mask,
|
||||
TP_PROTO(unsigned int *flags), /* gfp_t *flags */
|
||||
TP_ARGS(flags), 1);
|
||||
DECLARE_HOOK(android_vh_dm_bufio_shrink_scan_bypass,
|
||||
TP_PROTO(unsigned long dm_bufio_current_allocated, bool *bypass),
|
||||
TP_ARGS(dm_bufio_current_allocated, bypass));
|
||||
DECLARE_HOOK(android_vh_cleanup_old_buffers_bypass,
|
||||
TP_PROTO(unsigned long dm_bufio_current_allocated,
|
||||
unsigned long *max_age_hz,
|
||||
bool *bypass),
|
||||
TP_ARGS(dm_bufio_current_allocated, max_age_hz, bypass));
|
||||
DECLARE_HOOK(android_vh_mmap_region,
|
||||
TP_PROTO(struct vm_area_struct *vma, unsigned long addr),
|
||||
TP_ARGS(vma, addr));
|
||||
|
||||
Reference in New Issue
Block a user