1 #include <uapi/linux/ptrace.h> 2 #include <linux/sched.h> 3 4 struct key_t { 5 u32 prev_pid; 6 u32 curr_pid; 7 }; 8 9 BPF_HASH(stats, struct key_t, u64, 1024); count_sched(struct pt_regs * ctx,struct task_struct * prev)10int count_sched(struct pt_regs *ctx, struct task_struct *prev) { 11 struct key_t key = {}; 12 u64 zero = 0, *val; 13 14 key.curr_pid = bpf_get_current_pid_tgid(); 15 key.prev_pid = prev->pid; 16 17 // could also use `stats.increment(key);` 18 val = stats.lookup_or_try_init(&key, &zero); 19 if (val) { 20 (*val)++; 21 } 22 return 0; 23 } 24