Messages in this thread Patch in this message | | | Date | Mon, 8 Jul 2013 15:25:13 -0400 (EDT) | From | Vince Weaver <> | Subject | perf: export struct perf_branch_entry to userspace |
| |
In include/uapi/linux/perf_event.h we describe the PERF_SAMPLE_BRANCH_STACK fields in the PERF_RECORD_SAMPLE to be of type struct perf_branch_entry, but that structure is not exported to the user.
Should we not export that structure, something like the following?
Signed-off-by: Vince Weaver <vincent.weaver@maine.edu>
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 8873f82..65b2553 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -64,30 +64,6 @@ struct perf_raw_record { }; /* - * single taken branch record layout: - * - * from: source instruction (may not always be a branch insn) - * to: branch target - * mispred: branch target was mispredicted - * predicted: branch target was predicted - * - * support for mispred, predicted is optional. In case it - * is not supported mispred = predicted = 0. - * - * in_tx: running in a hardware transaction - * abort: aborting a hardware transaction - */ -struct perf_branch_entry { - __u64 from; - __u64 to; - __u64 mispred:1, /* target mispredicted */ - predicted:1,/* target predicted */ - in_tx:1, /* in transaction */ - abort:1, /* transaction abort */ - reserved:60; -}; - -/* * branch stack layout: * nr: number of taken branches stored in entries[] * diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_event.h index 0b1df41..c6e2f76 100644 --- a/include/uapi/linux/perf_event.h +++ b/include/uapi/linux/perf_event.h @@ -685,4 +685,28 @@ union perf_mem_data_src { #define PERF_MEM_S(a, s) \ (((u64)PERF_MEM_##a##_##s) << PERF_MEM_##a##_SHIFT) +/* + * single taken branch record layout: + * + * from: source instruction (may not always be a branch insn) + * to: branch target + * mispred: branch target was mispredicted + * predicted: branch target was predicted + * + * support for mispred, predicted is optional. In case it + * is not supported mispred = predicted = 0. + * + * in_tx: running in a hardware transaction + * abort: aborting a hardware transaction + */ +struct perf_branch_entry { + __u64 from; + __u64 to; + __u64 mispred:1, /* target mispredicted */ + predicted:1,/* target predicted */ + in_tx:1, /* in transaction */ + abort:1, /* transaction abort */ + reserved:60; +}; + #endif /* _UAPI_LINUX_PERF_EVENT_H */
| |