Blame view
samples/bpf/tracex4_kern.c
1.24 KB
9811e3535 samples/bpf: Add ... |
1 2 3 4 5 6 7 8 9 |
/* Copyright (c) 2015 PLUMgrid, http://plumgrid.com * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License as published by the Free Software Foundation. */ #include <linux/ptrace.h> #include <linux/version.h> #include <uapi/linux/bpf.h> |
7cf245a37 samples/bpf: Use ... |
10 11 |
#include <bpf/bpf_helpers.h> #include <bpf/bpf_tracing.h> |
9811e3535 samples/bpf: Add ... |
12 13 14 15 16 |
struct pair { u64 val; u64 ip; }; |
59929cd1f samples, bpf: Ref... |
17 18 19 20 21 22 |
struct { __uint(type, BPF_MAP_TYPE_HASH); __type(key, long); __type(value, struct pair); __uint(max_entries, 1000000); } my_map SEC(".maps"); |
9811e3535 samples/bpf: Add ... |
23 24 25 26 27 28 29 |
/* kprobe is NOT a stable ABI. If kernel internals change this bpf+kprobe * example will no longer be meaningful */ SEC("kprobe/kmem_cache_free") int bpf_prog1(struct pt_regs *ctx) { |
d912557b3 samples: bpf: ena... |
30 |
long ptr = PT_REGS_PARM2(ctx); |
9811e3535 samples/bpf: Add ... |
31 32 33 34 35 36 37 38 |
bpf_map_delete_elem(&my_map, &ptr); return 0; } SEC("kretprobe/kmem_cache_alloc_node") int bpf_prog2(struct pt_regs *ctx) { |
d912557b3 samples: bpf: ena... |
39 |
long ptr = PT_REGS_RC(ctx); |
9811e3535 samples/bpf: Add ... |
40 41 42 |
long ip = 0; /* get ip address of kmem_cache_alloc_node() caller */ |
138d6153a samples/bpf: Enab... |
43 |
BPF_KRETPROBE_READ_RET_IP(ip, ctx); |
9811e3535 samples/bpf: Add ... |
44 45 46 47 48 49 50 51 52 53 54 |
struct pair v = { .val = bpf_ktime_get_ns(), .ip = ip, }; bpf_map_update_elem(&my_map, &ptr, &v, BPF_ANY); return 0; } char _license[] SEC("license") = "GPL"; u32 _version SEC("version") = LINUX_VERSION_CODE; |