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. Signed-off-by: Vince Weaver <vincent.weaver@maine.edu> Acked-by: Stephane Eranian <eranian@google.com> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/alpine.DEB.2.10.1308231544420.1889@vincent-weaver-1.um.maine.edu Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
13d7a2410f
commit
274481de6c
|
@ -63,30 +63,6 @@ struct perf_raw_record {
|
||||||
void *data;
|
void *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* 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:
|
* branch stack layout:
|
||||||
* nr: number of taken branches stored in entries[]
|
* nr: number of taken branches stored in entries[]
|
||||||
|
|
|
@ -757,4 +757,28 @@ union perf_mem_data_src {
|
||||||
#define PERF_MEM_S(a, s) \
|
#define PERF_MEM_S(a, s) \
|
||||||
(((u64)PERF_MEM_##a##_##s) << PERF_MEM_##a##_SHIFT)
|
(((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 */
|
#endif /* _UAPI_LINUX_PERF_EVENT_H */
|
||||||
|
|
Loading…
Reference in New Issue