ANDROID: add func:do_traversal_all_lruvec in mm/memcontrol.c

do_traversal_all_lruvec: traversal all lruvec and do hookss.

Bug: 236578020
Signed-off-by: Peifeng Li <lipeifeng@oppo.com>
Change-Id: I3d4f5159faaca1ee71ffa65f2fc1341f51da637c
This commit is contained in:
Peifeng Li
2022-07-15 16:38:06 +08:00
committed by Suren Baghdasaryan
parent efbe140e82
commit 09ebd2be6e
2 changed files with 25 additions and 0 deletions

View File

@@ -382,6 +382,8 @@ enum page_memcg_data_flags {
static inline bool PageMemcgKmem(struct page *page);
void do_traversal_all_lruvec(void);
/*
* After the initialization objcg->memcg is always pointing at
* a valid memcg, but can be atomically swapped to the parent memcg.
@@ -1167,6 +1169,10 @@ static inline bool PageMemcgKmem(struct page *page)
return false;
}
static inline void do_traversal_all_lruvec(void)
{
}
static inline bool mem_cgroup_is_root(struct mem_cgroup *memcg)
{
return true;

View File

@@ -1279,6 +1279,25 @@ struct lruvec *lock_page_lruvec_irqsave(struct page *page, unsigned long *flags)
return lruvec;
}
void do_traversal_all_lruvec(void)
{
pg_data_t *pgdat;
for_each_online_pgdat(pgdat) {
struct mem_cgroup *memcg = NULL;
memcg = mem_cgroup_iter(NULL, NULL, NULL);
do {
struct lruvec *lruvec = mem_cgroup_lruvec(memcg, pgdat);
trace_android_vh_do_traversal_lruvec(lruvec);
memcg = mem_cgroup_iter(NULL, memcg, NULL);
} while (memcg);
}
}
EXPORT_SYMBOL_GPL(do_traversal_all_lruvec);
/**
* mem_cgroup_update_lru_size - account for adding or removing an lru page
* @lruvec: mem_cgroup per zone lru vector