xref: /linux/samples/bpf/trace_output.bpf.c (revision 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e)
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. Lee int 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