ANDROID: vendor_hooks: vendor hook for MM
2 Vendor hooks add:
trace_android_vh_free_one_page_bypass
trace_android_vh_rmqueue_smallest_bypass
Add vendor hook points in __free_one_page and __rmqueue to
manager some customized pages instead of freeing/allocating.
Bug: 286350069
Change-Id: If63e164c02a279f4f14ebd8603f49c58ba0fbc8a
Signed-off-by: chenzhiwei <chenzhiwei@xiaomi.corp-partner.google.com>
This commit is contained in:
parent
43d7226c5f
commit
ff8496749d
3 changed files with 21 additions and 1 deletions
|
|
@ -307,3 +307,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_init_aes_encrypt);
|
|||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_skip_swap_map_write);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_post_image_save);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_cold_pageout_skip);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rmqueue_smallest_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_one_page_bypass);
|
||||
|
|
|
|||
|
|
@ -122,6 +122,13 @@ DECLARE_HOOK(android_vh_mem_cgroup_css_online,
|
|||
DECLARE_HOOK(android_vh_mem_cgroup_css_offline,
|
||||
TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg),
|
||||
TP_ARGS(css, memcg));
|
||||
DECLARE_HOOK(android_vh_rmqueue_smallest_bypass,
|
||||
TP_PROTO(struct page **page, struct zone *zone, int order, int migratetype),
|
||||
TP_ARGS(page, zone, order, migratetype));
|
||||
DECLARE_HOOK(android_vh_free_one_page_bypass,
|
||||
TP_PROTO(struct page *page, struct zone *zone, int order, int migratetype,
|
||||
int fpi_flags, bool *bypass),
|
||||
TP_ARGS(page, zone, order, migratetype, fpi_flags, bypass));
|
||||
|
||||
#endif /* _TRACE_HOOK_MM_H */
|
||||
|
||||
|
|
|
|||
|
|
@ -1141,6 +1141,13 @@ static inline void __free_one_page(struct page *page,
|
|||
unsigned long combined_pfn;
|
||||
struct page *buddy;
|
||||
bool to_tail;
|
||||
bool bypass = false;
|
||||
|
||||
trace_android_vh_free_one_page_bypass(page, zone, order,
|
||||
migratetype, (int)fpi_flags, &bypass);
|
||||
|
||||
if (bypass)
|
||||
return;
|
||||
|
||||
VM_BUG_ON(!zone_is_initialized(zone));
|
||||
VM_BUG_ON_PAGE(page->flags & PAGE_FLAGS_CHECK_AT_PREP, page);
|
||||
|
|
@ -3129,7 +3136,11 @@ static __always_inline struct page *
|
|||
__rmqueue(struct zone *zone, unsigned int order, int migratetype,
|
||||
unsigned int alloc_flags)
|
||||
{
|
||||
struct page *page;
|
||||
struct page *page = NULL;
|
||||
|
||||
trace_android_vh_rmqueue_smallest_bypass(&page, zone, order, migratetype);
|
||||
if (page)
|
||||
return page;
|
||||
|
||||
retry:
|
||||
page = __rmqueue_smallest(zone, order, migratetype);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue