diff options
author | Milian Wolff <milian.wolff@kdab.com> | 2020-06-12 19:00:19 +0200 |
---|---|---|
committer | Milian Wolff <milian.wolff@kdab.com> | 2020-06-15 08:23:40 +0000 |
commit | a695b3b8d4cd755fe11152cc5e33a45be2f13490 (patch) | |
tree | e9949673fd3966741643abc03acb9ec0e88f5165 | |
parent | 02922fc1485d5039847ec99b499797543866f572 (diff) |
Sync PERF_RECORD_* and HEADER_* with latest versions from upstream
Change-Id: Ib9ce7196dd1cf30537d8552c828f844b5c494669
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
-rw-r--r-- | app/perfdata.cpp | 43 | ||||
-rw-r--r-- | app/perfdata.h | 85 | ||||
-rw-r--r-- | app/perfheader.h | 11 |
3 files changed, 137 insertions, 2 deletions
diff --git a/app/perfdata.cpp b/app/perfdata.cpp index 5b10eaf..e1c93f4 100644 --- a/app/perfdata.cpp +++ b/app/perfdata.cpp @@ -38,6 +38,47 @@ void PerfData::setSource(QIODevice *source) m_source = source; } +const char * perfEventToString(qint32 type) +{ + switch (type) { + case PERF_RECORD_MMAP: return "PERF_RECORD_MMAP"; + case PERF_RECORD_LOST: return "PERF_RECORD_LOST"; + case PERF_RECORD_COMM: return "PERF_RECORD_COMM"; + case PERF_RECORD_EXIT: return "PERF_RECORD_EXIT"; + case PERF_RECORD_THROTTLE: return "PERF_RECORD_THROTTLE"; + case PERF_RECORD_UNTHROTTLE: return "PERF_RECORD_UNTHROTTLE"; + case PERF_RECORD_FORK: return "PERF_RECORD_FORK"; + case PERF_RECORD_READ: return "PERF_RECORD_READ"; + case PERF_RECORD_SAMPLE: return "PERF_RECORD_SAMPLE"; + case PERF_RECORD_MMAP2: return "PERF_RECORD_MMAP2"; + case PERF_RECORD_SWITCH: return "PERF_RECORD_SWITCH"; + case PERF_RECORD_SWITCH_CPU_WIDE: return "PERF_RECORD_SWITCH_CPU_WIDE"; + case PERF_RECORD_NAMESPACES: return "PERF_RECORD_NAMESPACES"; + case PERF_RECORD_KSYMBOL: return "PERF_RECORD_KSYMBOL"; + case PERF_RECORD_BPF_EVENT: return "PERF_RECORD_BPF_EVENT"; + case PERF_RECORD_CGROUP: return "PERF_RECORD_CGROUP"; + case PERF_RECORD_HEADER_ATTR: return "PERF_RECORD_HEADER_ATTR"; + case PERF_RECORD_HEADER_EVENT_TYPE: return "PERF_RECORD_HEADER_EVENT_TYPE"; + case PERF_RECORD_HEADER_TRACING_DATA: return "PERF_RECORD_HEADER_TRACING_DATA"; + case PERF_RECORD_HEADER_BUILD_ID: return "PERF_RECORD_HEADER_BUILD_ID"; + case PERF_RECORD_FINISHED_ROUND: return "PERF_RECORD_FINISHED_ROUND"; + case PERF_RECORD_ID_INDEX: return "PERF_RECORD_ID_INDEX"; + case PERF_RECORD_AUXTRACE_INFO: return "PERF_RECORD_AUXTRACE_INFO"; + case PERF_RECORD_AUXTRACE: return "PERF_RECORD_AUXTRACE"; + case PERF_RECORD_AUXTRACE_ERROR: return "PERF_RECORD_AUXTRACE_ERROR"; + case PERF_RECORD_THREAD_MAP: return "PERF_RECORD_THREAD_MAP"; + case PERF_RECORD_CPU_MAP: return "PERF_RECORD_CPU_MAP"; + case PERF_RECORD_STAT_CONFIG: return "PERF_RECORD_STAT_CONFIG"; + case PERF_RECORD_STAT: return "PERF_RECORD_STAT"; + case PERF_RECORD_STAT_ROUND: return "PERF_RECORD_STAT_ROUND"; + case PERF_RECORD_EVENT_UPDATE: return "PERF_RECORD_EVENT_UPDATE"; + case PERF_RECORD_TIME_CONV: return "PERF_RECORD_TIME_CONV"; + case PERF_RECORD_HEADER_FEATURE: return "PERF_RECORD_HEADER_FEATURE"; + case PERF_RECORD_COMPRESSED: return "PERF_RECORD_COMPRESSED"; + } + return "uknown type"; +} + PerfData::ReadStatus PerfData::processEvents(QDataStream &stream) { const quint16 headerSize = PerfEventHeader::fixedLength(); @@ -187,7 +228,7 @@ PerfData::ReadStatus PerfData::processEvents(QDataStream &stream) } default: - qWarning() << "unhandled event type" << m_eventHeader.type; + qWarning() << "unhandled event type" << m_eventHeader.type << " " << perfEventToString(m_eventHeader.type); stream.skipRawData(contentSize); break; } diff --git a/app/perfdata.h b/app/perfdata.h index 5b7bf76..f337182 100644 --- a/app/perfdata.h +++ b/app/perfdata.h @@ -225,7 +225,77 @@ enum PerfEventType { */ PERF_RECORD_SWITCH = 14, - PERF_RECORD_MAX, /* non-ABI */ + /* + * CPU-wide version of PERF_RECORD_SWITCH with next_prev_pid and + * next_prev_tid that are the next (switching out) or previous + * (switching in) pid/tid. + * + * struct { + * struct perf_event_header header; + * u32 next_prev_pid; + * u32 next_prev_tid; + * struct sample_id sample_id; + * }; + */ + PERF_RECORD_SWITCH_CPU_WIDE = 15, + + /* + * struct { + * struct perf_event_header header; + * u32 pid; + * u32 tid; + * u64 nr_namespaces; + * { u64 dev, inode; } [nr_namespaces]; + * struct sample_id sample_id; + * }; + */ + PERF_RECORD_NAMESPACES = 16, + + /* + * Record ksymbol register/unregister events: + * + * struct { + * struct perf_event_header header; + * u64 addr; + * u32 len; + * u16 ksym_type; + * u16 flags; + * char name[]; + * struct sample_id sample_id; + * }; + */ + PERF_RECORD_KSYMBOL = 17, + + /* + * Record bpf events: + * enum perf_bpf_event_type { + * PERF_BPF_EVENT_UNKNOWN = 0, + * PERF_BPF_EVENT_PROG_LOAD = 1, + * PERF_BPF_EVENT_PROG_UNLOAD = 2, + * }; + * + * struct { + * struct perf_event_header header; + * u16 type; + * u16 flags; + * u32 id; + * u8 tag[BPF_TAG_SIZE]; + * struct sample_id sample_id; + * }; + */ + PERF_RECORD_BPF_EVENT = 18, + + /* + * struct { + * struct perf_event_header header; + * u64 id; + * char path[]; + * struct sample_id sample_id; + * }; + */ + PERF_RECORD_CGROUP = 19, + + PERF_RECORD_MAX, /* non-ABI */ PERF_RECORD_USER_TYPE_START = 64, PERF_RECORD_HEADER_ATTR = 64, @@ -233,6 +303,19 @@ enum PerfEventType { PERF_RECORD_HEADER_TRACING_DATA = 66, PERF_RECORD_HEADER_BUILD_ID = 67, PERF_RECORD_FINISHED_ROUND = 68, + PERF_RECORD_ID_INDEX = 69, + PERF_RECORD_AUXTRACE_INFO = 70, + PERF_RECORD_AUXTRACE = 71, + PERF_RECORD_AUXTRACE_ERROR = 72, + PERF_RECORD_THREAD_MAP = 73, + PERF_RECORD_CPU_MAP = 74, + PERF_RECORD_STAT_CONFIG = 75, + PERF_RECORD_STAT = 76, + PERF_RECORD_STAT_ROUND = 77, + PERF_RECORD_EVENT_UPDATE = 78, + PERF_RECORD_TIME_CONV = 79, + PERF_RECORD_HEADER_FEATURE = 80, + PERF_RECORD_COMPRESSED = 81, PERF_RECORD_HEADER_MAX }; diff --git a/app/perfheader.h b/app/perfheader.h index 32e41b4..e5c769f 100644 --- a/app/perfheader.h +++ b/app/perfheader.h @@ -51,6 +51,17 @@ public: BRANCH_STACK, PMU_MAPPINGS, GROUP_DESC, + AUXTRACE, + STAT, + CACHE, + SAMPLE_TIME, + MEM_TOPOLOGY, + CLOCKID, + DIR_FORMAT, + BPF_PROG_INFO, + BPF_BTF, + COMPRESSED, + CPU_PMU_CAPS, LAST_FEATURE, FEAT_BITS = 256, }; |