1*d4fffba4SDaniel T. Lee #include "vmlinux.h" 2*d4fffba4SDaniel T. Lee #include <linux/version.h> 3*d4fffba4SDaniel T. Lee #include <bpf/bpf_helpers.h> 4*d4fffba4SDaniel T. Lee 5*d4fffba4SDaniel T. Lee struct { 6*d4fffba4SDaniel T. Lee __uint(type, BPF_MAP_TYPE_PERF_EVENT_ARRAY); 7*d4fffba4SDaniel T. Lee __uint(key_size, sizeof(int)); 8*d4fffba4SDaniel T. Lee __uint(value_size, sizeof(u32)); 9*d4fffba4SDaniel T. Lee __uint(max_entries, 2); 10*d4fffba4SDaniel T. Lee } my_map SEC(".maps"); 11*d4fffba4SDaniel T. Lee 12*d4fffba4SDaniel T. Lee SEC("ksyscall/write") bpf_prog1(struct pt_regs * ctx)13*d4fffba4SDaniel T. Leeint bpf_prog1(struct pt_regs *ctx) 14*d4fffba4SDaniel T. Lee { 15*d4fffba4SDaniel T. Lee struct S { 16*d4fffba4SDaniel T. Lee u64 pid; 17*d4fffba4SDaniel T. Lee u64 cookie; 18*d4fffba4SDaniel T. Lee } data; 19*d4fffba4SDaniel T. Lee 20*d4fffba4SDaniel T. Lee data.pid = bpf_get_current_pid_tgid(); 21*d4fffba4SDaniel T. Lee data.cookie = 0x12345678; 22*d4fffba4SDaniel T. Lee 23*d4fffba4SDaniel T. Lee bpf_perf_event_output(ctx, &my_map, 0, &data, sizeof(data)); 24*d4fffba4SDaniel T. Lee 25*d4fffba4SDaniel T. Lee return 0; 26*d4fffba4SDaniel T. Lee } 27*d4fffba4SDaniel T. Lee 28*d4fffba4SDaniel T. Lee char _license[] SEC("license") = "GPL"; 29*d4fffba4SDaniel T. Lee u32 _version SEC("version") = LINUX_VERSION_CODE; 30