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

Commit 83b9149

Browse files
YangYang866Kalesh Singh
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 Change-Id: Id0a2cd558eff2bbcef6fd49d7615fce51a6856e3 Signed-off-by: Yang Yang <[email protected]>
1 parent e045e3c commit 83b9149

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
@@ -466,6 +466,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_add_folio);
466466
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lock_folio_drop_mmap_start);
467467
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lock_folio_drop_mmap_end);
468468
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_update_page);
469+
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lruvec_add_folio);
470+
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lruvec_del_folio);
469471
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_update_page_mapcount);
470472
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_add_page_to_lrulist);
471473
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_del_page_from_lrulist);

include/linux/mm_inline.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,11 @@ static __always_inline
355355
void lruvec_add_folio(struct lruvec *lruvec, struct folio *folio)
356356
{
357357
enum lru_list lru = folio_lru_list(folio);
358+
bool skip = false;
359+
360+
trace_android_vh_lruvec_add_folio(lruvec, folio, lru, false, &skip);
361+
if (skip)
362+
return;
358363

359364
if (lru_gen_add_folio(lruvec, folio, false))
360365
return;
@@ -370,6 +375,11 @@ static __always_inline
370375
void lruvec_add_folio_tail(struct lruvec *lruvec, struct folio *folio)
371376
{
372377
enum lru_list lru = folio_lru_list(folio);
378+
bool skip = false;
379+
380+
trace_android_vh_lruvec_add_folio(lruvec, folio, lru, true, &skip);
381+
if (skip)
382+
return;
373383

374384
if (lru_gen_add_folio(lruvec, folio, true))
375385
return;
@@ -385,6 +395,11 @@ static __always_inline
385395
void lruvec_del_folio(struct lruvec *lruvec, struct folio *folio)
386396
{
387397
enum lru_list lru = folio_lru_list(folio);
398+
bool skip = false;
399+
400+
trace_android_vh_lruvec_del_folio(lruvec, folio, lru, &skip);
401+
if (skip)
402+
return;
388403

389404
if (lru_gen_del_folio(lruvec, folio, false))
390405
return;

include/trace/hooks/mm.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,17 @@ DECLARE_HOOK(android_vh_filemap_update_page,
339339
TP_PROTO(struct address_space *mapping, struct folio *folio,
340340
struct file *file),
341341
TP_ARGS(mapping, folio, file));
342+
343+
DECLARE_HOOK(android_vh_lruvec_add_folio,
344+
TP_PROTO(struct lruvec *lruvec, struct folio *folio, enum lru_list lru,
345+
bool tail, bool *skip),
346+
TP_ARGS(lruvec, folio, lru, tail, skip));
347+
348+
DECLARE_HOOK(android_vh_lruvec_del_folio,
349+
TP_PROTO(struct lruvec *lruvec, struct folio *folio, enum lru_list lru,
350+
bool *skip),
351+
TP_ARGS(lruvec, folio, lru, skip));
352+
342353
DECLARE_HOOK(android_vh_cma_debug_show_areas,
343354
TP_PROTO(bool *show),
344355
TP_ARGS(show));

0 commit comments

Comments
 (0)