#ifndef STRACE_LINUX_PERF_EVENT_STRUCT_H #define STRACE_LINUX_PERF_EVENT_STRUCT_H #include <stdint.h> struct perf_event_attr { uint32_t type; uint32_t size; uint64_t config; union { uint64_t sample_period; uint64_t sample_freq; }; uint64_t sample_type; uint64_t read_format; uint64_t disabled :1, inherit :1, pinned :1, exclusive :1, exclude_user :1, exclude_kernel :1, exclude_hv :1, exclude_idle :1, mmap :1, comm :1, freq :1, inherit_stat :1, enable_on_exec :1, task :1, watermark :1, precise_ip :2, mmap_data :1, sample_id_all :1, exclude_host :1, exclude_guest :1, exclude_callchain_kernel :1, exclude_callchain_user :1, mmap2 :1, comm_exec :1, use_clockid :1, context_switch :1, write_backward :1, namespaces :1, __reserved_1 :35; union { uint32_t wakeup_events; uint32_t wakeup_watermark; }; uint32_t bp_type; union { uint64_t bp_addr; uint64_t config1; }; /* End of ver 0 - 64 bytes */ union { uint64_t bp_len; uint64_t config2; }; /* End of ver 1 - 72 bytes */ uint64_t branch_sample_type; /* End of ver 2 - 80 bytes */ uint64_t sample_regs_user; uint32_t sample_stack_user; int32_t clockid; /* End of ver 3 - 96 bytes */ uint64_t sample_regs_intr; /* End of ver 4 - 104 bytes */ uint32_t aux_watermark; uint16_t sample_max_stack; uint16_t __reserved_2; /* End of ver 5 - 112 bytes */ }; struct perf_event_query_bpf { uint32_t ids_len; uint32_t prog_cnt; uint32_t ids[0]; }; #endif /* !STRACE_LINUX_PERF_EVENT_STRUCT_H */