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-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-25 18:17:41 +00:00
|
|
|
#endif /* __LIBPERF_EVENT_H */
|