ebpf_exporter
47 строк · 1.2 Кб
1#include <vmlinux.h>
2#include <bpf/bpf_tracing.h>
3#include <bpf/bpf_core_read.h>
4#include "maps.bpf.h"
5#include "regs-ip.bpf.h"
6
7struct {
8__uint(type, BPF_MAP_TYPE_HASH);
9__uint(max_entries, 4);
10__type(key, u64);
11__type(value, u64);
12} page_cache_ops_total SEC(".maps");
13
14SEC("kprobe/add_to_page_cache_lru")
15int add_to_page_cache_lru(struct pt_regs *ctx)
16{
17u64 ip = KPROBE_REGS_IP_FIX(PT_REGS_IP_CORE(ctx));
18increment_map(&page_cache_ops_total, &ip, 1);
19return 0;
20}
21
22SEC("kprobe/mark_page_accessed")
23int mark_page_accessed(struct pt_regs *ctx)
24{
25u64 ip = KPROBE_REGS_IP_FIX(PT_REGS_IP_CORE(ctx));
26increment_map(&page_cache_ops_total, &ip, 1);
27return 0;
28}
29
30// This function is usually not visible.
31SEC("kprobe/folio_account_dirtied")
32int folio_account_dirtied(struct pt_regs *ctx)
33{
34u64 ip = KPROBE_REGS_IP_FIX(PT_REGS_IP_CORE(ctx));
35increment_map(&page_cache_ops_total, &ip, 1);
36return 0;
37}
38
39SEC("kprobe/mark_buffer_dirty")
40int mark_buffer_dirty(struct pt_regs *ctx)
41{
42u64 ip = KPROBE_REGS_IP_FIX(PT_REGS_IP_CORE(ctx));
43increment_map(&page_cache_ops_total, &ip, 1);
44return 0;
45}
46
47char LICENSE[] SEC("license") = "GPL";
48