| #include <uapi/linux/ptrace.h> | |
| #include <linux/sched.h> | |
| struct key_t { | |
| u32 prev_pid; | |
| u32 curr_pid; | |
| }; | |
| BPF_HASH(stats, struct key_t, u64, 1024); | |
| int count_sched(struct pt_regs *ctx, struct task_struct *prev) { | |
| struct key_t key = {}; | |
| u64 zero = 0, *val; | |
| key.curr_pid = bpf_get_current_pid_tgid(); | |
| key.prev_pid = prev->pid; | |
| // could also use `stats.increment(key);` | |
| val = stats.lookup_or_try_init(&key, &zero); | |
| if (val) { | |
| (*val)++; | |
| } | |
| return 0; | |
| } |