2019-08-25 18:17:41 +00:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
#ifndef __LIBPERF_EVENT_H
|
|
|
|
#define __LIBPERF_EVENT_H
|
|
|
|
|
|
|
|
#include <linux/perf_event.h>
|
|
|
|
#include <linux/types.h>
|
|
|
|
#include <linux/limits.h>
|
2019-08-25 18:17:51 +00:00
|
|
|
#include <linux/bpf.h>
|
2019-08-28 13:57:00 +00:00
|
|
|
#include <sys/types.h> /* pid_t */
|
2019-08-25 18:17:41 +00:00
|
|
|
|
2019-08-26 22:02:31 +00:00
|
|
|
struct perf_record_mmap {
|
2019-08-25 18:17:41 +00:00
|
|
|
struct perf_event_header header;
|
|
|
|
__u32 pid, tid;
|
|
|
|
__u64 start;
|
|
|
|
__u64 len;
|
|
|
|
__u64 pgoff;
|
|
|
|
char filename[PATH_MAX];
|
|
|
|
};
|
|
|
|
|
2019-08-26 22:02:31 +00:00
|
|
|
struct perf_record_mmap2 {
|
2019-08-25 18:17:42 +00:00
|
|
|
struct perf_event_header header;
|
|
|
|
__u32 pid, tid;
|
|
|
|
__u64 start;
|
|
|
|
__u64 len;
|
|
|
|
__u64 pgoff;
|
|
|
|
__u32 maj;
|
|
|
|
__u32 min;
|
|
|
|
__u64 ino;
|
|
|
|
__u64 ino_generation;
|
|
|
|
__u32 prot;
|
|
|
|
__u32 flags;
|
|
|
|
char filename[PATH_MAX];
|
|
|
|
};
|
|
|
|
|
2019-08-26 22:02:31 +00:00
|
|
|
struct perf_record_comm {
|
2019-08-25 18:17:43 +00:00
|
|
|
struct perf_event_header header;
|
|
|
|
__u32 pid, tid;
|
|
|
|
char comm[16];
|
|
|
|
};
|
|
|
|
|
2019-08-26 22:02:31 +00:00
|
|
|
struct perf_record_namespaces {
|
2019-08-25 18:17:44 +00:00
|
|
|
struct perf_event_header header;
|
|
|
|
__u32 pid, tid;
|
|
|
|
__u64 nr_namespaces;
|
|
|
|
struct perf_ns_link_info link_info[];
|
|
|
|
};
|
|
|
|
|
2019-08-26 22:02:31 +00:00
|
|
|
struct perf_record_fork {
|
2019-08-25 18:17:45 +00:00
|
|
|
struct perf_event_header header;
|
|
|
|
__u32 pid, ppid;
|
|
|
|
__u32 tid, ptid;
|
|
|
|
__u64 time;
|
|
|
|
};
|
|
|
|
|
2019-08-26 22:02:31 +00:00
|
|
|
struct perf_record_lost {
|
2019-08-25 18:17:46 +00:00
|
|
|
struct perf_event_header header;
|
|
|
|
__u64 id;
|
|
|
|
__u64 lost;
|
|
|
|
};
|
|
|
|
|
2019-08-26 22:02:31 +00:00
|
|
|
struct perf_record_lost_samples {
|
2019-08-25 18:17:47 +00:00
|
|
|
struct perf_event_header header;
|
|
|
|
__u64 lost;
|
|
|
|
};
|
|
|
|
|
2019-08-25 18:17:48 +00:00
|
|
|
/*
|
|
|
|
* PERF_FORMAT_ENABLED | PERF_FORMAT_RUNNING | PERF_FORMAT_ID
|
|
|
|
*/
|
2019-08-26 22:02:31 +00:00
|
|
|
struct perf_record_read {
|
2019-08-25 18:17:48 +00:00
|
|
|
struct perf_event_header header;
|
|
|
|
__u32 pid, tid;
|
|
|
|
__u64 value;
|
|
|
|
__u64 time_enabled;
|
|
|
|
__u64 time_running;
|
|
|
|
__u64 id;
|
|
|
|
};
|
|
|
|
|
2019-08-26 22:02:31 +00:00
|
|
|
struct perf_record_throttle {
|
2019-08-25 18:17:49 +00:00
|
|
|
struct perf_event_header header;
|
|
|
|
__u64 time;
|
|
|
|
__u64 id;
|
|
|
|
__u64 stream_id;
|
|
|
|
};
|
|
|
|
|
2019-08-25 18:17:50 +00:00
|
|
|
#ifndef KSYM_NAME_LEN
|
|
|
|
#define KSYM_NAME_LEN 256
|
|
|
|
#endif
|
|
|
|
|
2019-08-26 22:02:31 +00:00
|
|
|
struct perf_record_ksymbol {
|
2019-08-25 18:17:50 +00:00
|
|
|
struct perf_event_header header;
|
|
|
|
__u64 addr;
|
|
|
|
__u32 len;
|
|
|
|
__u16 ksym_type;
|
|
|
|
__u16 flags;
|
|
|
|
char name[KSYM_NAME_LEN];
|
|
|
|
};
|
|
|
|
|
2019-08-26 22:02:31 +00:00
|
|
|
struct perf_record_bpf_event {
|
2019-08-25 18:17:51 +00:00
|
|
|
struct perf_event_header header;
|
|
|
|
__u16 type;
|
|
|
|
__u16 flags;
|
|
|
|
__u32 id;
|
|
|
|
|
|
|
|
/* for bpf_prog types */
|
|
|
|
__u8 tag[BPF_TAG_SIZE]; // prog tag
|
|
|
|
};
|
|
|
|
|
2019-08-26 22:02:31 +00:00
|
|
|
struct perf_record_sample {
|
2019-08-25 18:17:52 +00:00
|
|
|
struct perf_event_header header;
|
|
|
|
__u64 array[];
|
|
|
|
};
|
|
|
|
|
2019-08-28 13:56:55 +00:00
|
|
|
struct attr_event {
|
|
|
|
struct perf_event_header header;
|
|
|
|
struct perf_event_attr attr;
|
|
|
|
__u64 id[];
|
|
|
|
};
|
|
|
|
|
2019-08-28 13:56:56 +00:00
|
|
|
enum {
|
|
|
|
PERF_CPU_MAP__CPUS = 0,
|
|
|
|
PERF_CPU_MAP__MASK = 1,
|
|
|
|
};
|
|
|
|
|
|
|
|
struct cpu_map_entries {
|
|
|
|
__u16 nr;
|
|
|
|
__u16 cpu[];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct cpu_map_mask {
|
|
|
|
__u16 nr;
|
|
|
|
__u16 long_size;
|
|
|
|
unsigned long mask[];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct cpu_map_data {
|
|
|
|
__u16 type;
|
|
|
|
char data[];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct cpu_map_event {
|
|
|
|
struct perf_event_header header;
|
|
|
|
struct cpu_map_data data;
|
|
|
|
};
|
|
|
|
|
2019-08-28 13:56:57 +00:00
|
|
|
enum {
|
|
|
|
PERF_EVENT_UPDATE__UNIT = 0,
|
|
|
|
PERF_EVENT_UPDATE__SCALE = 1,
|
|
|
|
PERF_EVENT_UPDATE__NAME = 2,
|
|
|
|
PERF_EVENT_UPDATE__CPUS = 3,
|
|
|
|
};
|
|
|
|
|
|
|
|
struct event_update_event_cpus {
|
|
|
|
struct cpu_map_data cpus;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct event_update_event_scale {
|
|
|
|
double scale;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct event_update_event {
|
|
|
|
struct perf_event_header header;
|
|
|
|
__u64 type;
|
|
|
|
__u64 id;
|
|
|
|
char data[];
|
|
|
|
};
|
|
|
|
|
2019-08-28 13:56:58 +00:00
|
|
|
#define MAX_EVENT_NAME 64
|
|
|
|
|
|
|
|
struct perf_trace_event_type {
|
|
|
|
__u64 event_id;
|
|
|
|
char name[MAX_EVENT_NAME];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct event_type_event {
|
|
|
|
struct perf_event_header header;
|
|
|
|
struct perf_trace_event_type event_type;
|
|
|
|
};
|
|
|
|
|
2019-08-28 13:56:59 +00:00
|
|
|
struct tracing_data_event {
|
|
|
|
struct perf_event_header header;
|
|
|
|
__u32 size;
|
|
|
|
};
|
|
|
|
|
2019-08-28 13:57:00 +00:00
|
|
|
struct build_id_event {
|
|
|
|
struct perf_event_header header;
|
|
|
|
pid_t pid;
|
|
|
|
__u8 build_id[24];
|
|
|
|
char filename[];
|
|
|
|
};
|
|
|
|
|
2019-08-28 13:57:01 +00:00
|
|
|
struct id_index_entry {
|
|
|
|
__u64 id;
|
|
|
|
__u64 idx;
|
|
|
|
__u64 cpu;
|
|
|
|
__u64 tid;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct id_index_event {
|
|
|
|
struct perf_event_header header;
|
|
|
|
__u64 nr;
|
|
|
|
struct id_index_entry entries[0];
|
|
|
|
};
|
|
|
|
|
2019-08-28 13:57:02 +00:00
|
|
|
struct auxtrace_info_event {
|
|
|
|
struct perf_event_header header;
|
|
|
|
__u32 type;
|
|
|
|
__u32 reserved__; /* For alignment */
|
|
|
|
__u64 priv[];
|
|
|
|
};
|
|
|
|
|
2019-08-28 13:57:03 +00:00
|
|
|
struct auxtrace_event {
|
|
|
|
struct perf_event_header header;
|
|
|
|
__u64 size;
|
|
|
|
__u64 offset;
|
|
|
|
__u64 reference;
|
|
|
|
__u32 idx;
|
|
|
|
__u32 tid;
|
|
|
|
__u32 cpu;
|
|
|
|
__u32 reserved__; /* For alignment */
|
|
|
|
};
|
|
|
|
|
2019-08-25 18:17:41 +00:00
|
|
|
#endif /* __LIBPERF_EVENT_H */
|