Skip to content
This repository was archived by the owner on Nov 8, 2023. It is now read-only.

Commit 8529ec3

Browse files
YangYang866Carlos Llamas
authored andcommitted
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 <[email protected]> (cherry picked from commit 83b9149) Signed-off-by: ying zuxin <[email protected]>
1 parent 3ccf388 commit 8529ec3

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

drivers/android/vendor_hooks.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_flush_work_wait_start);
378378
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_flush_work_wait_finish);
379379
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_fuse_request_send);
380380
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_fuse_request_end);
381+
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lruvec_add_folio);
382+
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lruvec_del_folio);
381383
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_sock_error);
382384
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_fastsyn);
383385
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_state_change);

include/linux/mm_inline.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
#include <linux/userfaultfd_k.h>
1111
#include <linux/swapops.h>
1212

13+
#undef CREATE_TRACE_POINTS
14+
#include <trace/hooks/mm.h>
15+
1316
/**
1417
* folio_is_file_lru - Should the folio be on a file LRU or anon LRU?
1518
* @folio: The folio to test.
@@ -340,6 +343,11 @@ static __always_inline
340343
void lruvec_add_folio(struct lruvec *lruvec, struct folio *folio)
341344
{
342345
enum lru_list lru = folio_lru_list(folio);
346+
bool skip = false;
347+
348+
trace_android_vh_lruvec_add_folio(lruvec, folio, lru, false, &skip);
349+
if (skip)
350+
return;
343351

344352
if (lru_gen_add_folio(lruvec, folio, false))
345353
return;
@@ -354,6 +362,11 @@ static __always_inline
354362
void lruvec_add_folio_tail(struct lruvec *lruvec, struct folio *folio)
355363
{
356364
enum lru_list lru = folio_lru_list(folio);
365+
bool skip = false;
366+
367+
trace_android_vh_lruvec_add_folio(lruvec, folio, lru, true, &skip);
368+
if (skip)
369+
return;
357370

358371
if (lru_gen_add_folio(lruvec, folio, true))
359372
return;
@@ -368,6 +381,11 @@ static __always_inline
368381
void lruvec_del_folio(struct lruvec *lruvec, struct folio *folio)
369382
{
370383
enum lru_list lru = folio_lru_list(folio);
384+
bool skip = false;
385+
386+
trace_android_vh_lruvec_del_folio(lruvec, folio, lru, &skip);
387+
if (skip)
388+
return;
371389

372390
if (lru_gen_del_folio(lruvec, folio, false))
373391
return;

include/trace/hooks/mm.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,14 @@ DECLARE_HOOK(android_vh_compact_finished,
456456
DECLARE_HOOK(android_vh_madvise_cold_or_pageout_abort,
457457
TP_PROTO(struct vm_area_struct *vma, bool *abort_madvise),
458458
TP_ARGS(vma, abort_madvise));
459+
DECLARE_HOOK(android_vh_lruvec_add_folio,
460+
TP_PROTO(struct lruvec *lruvec, struct folio *folio, enum lru_list lru,
461+
bool tail, bool *skip),
462+
TP_ARGS(lruvec, folio, lru, tail, skip));
463+
DECLARE_HOOK(android_vh_lruvec_del_folio,
464+
TP_PROTO(struct lruvec *lruvec, struct folio *folio, enum lru_list lru,
465+
bool *skip),
466+
TP_ARGS(lruvec, folio, lru, skip));
459467
#endif /* _TRACE_HOOK_MM_H */
460468

461469
/* This part must be outside protection */

0 commit comments

Comments
 (0)