ANDROID: vendor_hooks: add hook when adding or deleting folios
Introducing vendor hooks during the addition or deletion of folios aims to manage specific folios within a dedicated list, thereby ensuring a more precise memory reclamation process. Bug: 381203903 Bug: 411576684 Change-Id: Id0a2cd558eff2bbcef6fd49d7615fce51a6856e3 Signed-off-by: Yang Yang <yang.yang@vivo.com> (cherry picked from commit 83b91498d3574a5f5388f3f2babdac27e2b38685) Signed-off-by: ying zuxin <11154159@vivo.com>
This commit is contained in:
@@ -378,6 +378,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_flush_work_wait_start);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_flush_work_wait_finish);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_fuse_request_send);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_fuse_request_end);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lruvec_add_folio);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lruvec_del_folio);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_sock_error);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_fastsyn);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_state_change);
|
||||
|
||||
@@ -10,6 +10,9 @@
|
||||
#include <linux/userfaultfd_k.h>
|
||||
#include <linux/swapops.h>
|
||||
|
||||
#undef CREATE_TRACE_POINTS
|
||||
#include <trace/hooks/mm.h>
|
||||
|
||||
/**
|
||||
* folio_is_file_lru - Should the folio be on a file LRU or anon LRU?
|
||||
* @folio: The folio to test.
|
||||
@@ -340,6 +343,11 @@ static __always_inline
|
||||
void lruvec_add_folio(struct lruvec *lruvec, struct folio *folio)
|
||||
{
|
||||
enum lru_list lru = folio_lru_list(folio);
|
||||
bool skip = false;
|
||||
|
||||
trace_android_vh_lruvec_add_folio(lruvec, folio, lru, false, &skip);
|
||||
if (skip)
|
||||
return;
|
||||
|
||||
if (lru_gen_add_folio(lruvec, folio, false))
|
||||
return;
|
||||
@@ -354,6 +362,11 @@ static __always_inline
|
||||
void lruvec_add_folio_tail(struct lruvec *lruvec, struct folio *folio)
|
||||
{
|
||||
enum lru_list lru = folio_lru_list(folio);
|
||||
bool skip = false;
|
||||
|
||||
trace_android_vh_lruvec_add_folio(lruvec, folio, lru, true, &skip);
|
||||
if (skip)
|
||||
return;
|
||||
|
||||
if (lru_gen_add_folio(lruvec, folio, true))
|
||||
return;
|
||||
@@ -368,6 +381,11 @@ static __always_inline
|
||||
void lruvec_del_folio(struct lruvec *lruvec, struct folio *folio)
|
||||
{
|
||||
enum lru_list lru = folio_lru_list(folio);
|
||||
bool skip = false;
|
||||
|
||||
trace_android_vh_lruvec_del_folio(lruvec, folio, lru, &skip);
|
||||
if (skip)
|
||||
return;
|
||||
|
||||
if (lru_gen_del_folio(lruvec, folio, false))
|
||||
return;
|
||||
|
||||
@@ -456,6 +456,14 @@ DECLARE_HOOK(android_vh_compact_finished,
|
||||
DECLARE_HOOK(android_vh_madvise_cold_or_pageout_abort,
|
||||
TP_PROTO(struct vm_area_struct *vma, bool *abort_madvise),
|
||||
TP_ARGS(vma, abort_madvise));
|
||||
DECLARE_HOOK(android_vh_lruvec_add_folio,
|
||||
TP_PROTO(struct lruvec *lruvec, struct folio *folio, enum lru_list lru,
|
||||
bool tail, bool *skip),
|
||||
TP_ARGS(lruvec, folio, lru, tail, skip));
|
||||
DECLARE_HOOK(android_vh_lruvec_del_folio,
|
||||
TP_PROTO(struct lruvec *lruvec, struct folio *folio, enum lru_list lru,
|
||||
bool *skip),
|
||||
TP_ARGS(lruvec, folio, lru, skip));
|
||||
#endif /* _TRACE_HOOK_MM_H */
|
||||
|
||||
/* This part must be outside protection */
|
||||
|
||||
Reference in New Issue
Block a user