From d8506e9151bd1a7a6e54d6d4508532dd0bbfd759 Mon Sep 17 00:00:00 2001 From: Motomu Utsumi Date: Thu, 22 May 2025 16:07:01 +0900 Subject: [PATCH] Allow rust bpfloader to load bpfMemEvents.bpf Test: TH Bug: 410982483 Change-Id: I156024bf130c1a808d657b9b501b64d2ae0d607b --- loader/bpfloader.rs | 54 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/loader/bpfloader.rs b/loader/bpfloader.rs index 9881b3f..c34d0ac 100644 --- a/loader/bpfloader.rs +++ b/loader/bpfloader.rs @@ -49,6 +49,8 @@ const fn kver(a: u32, b: u32, c: u32) -> u32 { const KVER_NONE: u32 = kver(0, 0, 0); const KVER_INF: u32 = 0xFFFFFFFF; +const KVER_5_10: u32 = kver(5, 10, 0); +const KVER_6_1: u32 = kver(6, 1, 0); enum KernelLevel { // Commented out unused due to rust complaining... @@ -160,6 +162,10 @@ impl MapDesc { pub const fn new(group: u32, perms: mode_t, name: &'static str) -> Self { MapDesc { name, perms, owner: AID_ROOT, group, min_kver: KVER_NONE, max_kver: KVER_INF } } + + pub const fn new_kver(group: u32, perms: mode_t, min_kver: u32, name: &'static str) -> Self { + MapDesc { name, perms, owner: AID_ROOT, group, min_kver, max_kver: KVER_INF } + } } struct ProgDesc { @@ -175,6 +181,10 @@ impl ProgDesc { pub const fn new(group: u32, name: &'static str) -> Self { ProgDesc { name, owner: AID_ROOT, group, min_kver: KVER_NONE, max_kver: KVER_INF } } + + pub const fn new_kver(group: u32, min_kver: u32, name: &'static str) -> Self { + ProgDesc { name, owner: AID_ROOT, group, min_kver, max_kver: KVER_INF } + } } struct BpfFileDesc { @@ -261,6 +271,50 @@ const FILE_ARR: &[BpfFileDesc] = &[ ], progs: &[ProgDesc::new(GID_GRAPHICS, "tracepoint_power_gpu_work_period")], }, + BpfFileDesc { + filename: "bpfMemEvents.bpf", + dir: "/etc/bpf/memevents/", + prefix: "memevents/", + critical: false, + skip_on_user: false, + maps: &[ + MapDesc::new_kver(GID_SYSTEM, PERM_GRW, KVER_5_10, "ams_rb"), + MapDesc::new_kver(GID_SYSTEM, PERM_GRW, KVER_5_10, "lmkd_rb"), + ], + progs: &[ + ProgDesc::new_kver(GID_SYSTEM, KVER_5_10, "tracepoint_oom_mark_victim_ams"), + ProgDesc::new_kver( + GID_SYSTEM, + KVER_5_10, + "tracepoint_vmscan_mm_vmscan_direct_reclaim_begin_lmkd", + ), + ProgDesc::new_kver( + GID_SYSTEM, + KVER_5_10, + "tracepoint_vmscan_mm_vmscan_direct_reclaim_end_lmkd", + ), + ProgDesc::new_kver( + GID_SYSTEM, + KVER_5_10, + "tracepoint_vmscan_mm_vmscan_kswapd_wake_lmkd", + ), + ProgDesc::new_kver( + GID_SYSTEM, + KVER_5_10, + "tracepoint_vmscan_mm_vmscan_kswapd_sleep_lmkd", + ), + ProgDesc::new_kver( + GID_SYSTEM, + KVER_6_1, + "tracepoint_android_vendor_lmk_android_trigger_vendor_lmk_kill_lmkd", + ), + ProgDesc::new_kver( + GID_SYSTEM, + KVER_6_1, + "tracepoint_kmem_mm_calculate_totalreserve_pages_lmkd", + ), + ], + }, ]; // TODO: Remove this code when fuse-bpf is upstreamed