History

perf: Export struct perf_branch_entry to userspace

If PERF_SAMPLE_BRANCH_STACK is enabled then samples are returned with the format { u64 from, to, flags } but the flags layout is not specified. This field has the type struct perf_branch_entry; move this definition into include/uapi/linux/perf_event.h so users can access these fields. This is similar to the existing inclusion of perf_mem_data_src in the include/uapi/linux/perf_event.h file.

Vince Weaver committed 13 years ago

Commit 274481d1 parent 13d7a242 files · +24 −24Browse files

Showing the changes to include/uapi/linux (1 of 2 files). Show all

Unified · Split

include/uapi/linux/perf_event.h+24−0
@@ -757,4 +757,28 @@ union perf_mem_data_src { · 756 unmodified lines
757757 #define PERF_MEM_S(a, s) \
758758 (((u64)PERF_MEM_##a##_##s) << PERF_MEM_##a##_SHIFT)
759759
760+/*
761+ * single taken branch record layout:
762+ *
763+ * from: source instruction (may not always be a branch insn)
764+ * to: branch target
765+ * mispred: branch target was mispredicted
766+ * predicted: branch target was predicted
767+ *
768+ * support for mispred, predicted is optional. In case it
769+ * is not supported mispred = predicted = 0.
770+ *
771+ * in_tx: running in a hardware transaction
772+ * abort: aborting a hardware transaction
773+ */
774+struct perf_branch_entry {
775+ __u64 from;
776+ __u64 to;
777+ __u64 mispred:1, /* target mispredicted */
778+ predicted:1,/* target predicted */
779+ in_tx:1, /* in transaction */
780+ abort:1, /* transaction abort */
781+ reserved:60;
782+};
783+
760784 #endif /* _UAPI_LINUX_PERF_EVENT_H */