mirror of https://github.com/mkerrisk/man-pages
perf_event_open.2: Document PERF_SAMPLE_REGS_INTR
This patch relates to the addition of PERF_SAMPLE_REGS_INTR support added in the following commit: perf_sample_regs_intr; Linux 3.19 commit 60e2364e60e86e81bc6377f49779779e6120977f Author: Stephane Eranian <eranian@google.com> perf: Add ability to sample machine state on interrupt The primary difference between PERF_SAMPLE_REGS_INTR and the existing PERF_SAMPLE_REGS_USER is that the new support will return kernel register values. Also if precise_ip is set higher than 0 then the PEBS register state will be returned rather than the saved interrupt state. This patch incorporates feedback from Stephane Eranian and Andi Kleen. Signed-off-by: Vince Weaver <vincent.weaver@maine.edu> Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
parent
4607213d6b
commit
f5281dfdd8
|
@ -256,7 +256,7 @@ struct perf_event_attr {
|
||||||
__u32 sample_stack_user; /* size of stack to dump on
|
__u32 sample_stack_user; /* size of stack to dump on
|
||||||
samples */
|
samples */
|
||||||
__u32 __reserved_2; /* Align to u64 */
|
__u32 __reserved_2; /* Align to u64 */
|
||||||
|
__u64 sample_regs_intr; /* regs to dump on samples */
|
||||||
};
|
};
|
||||||
.fi
|
.fi
|
||||||
.in
|
.in
|
||||||
|
@ -350,6 +350,11 @@ and
|
||||||
.I sample_stack_user
|
.I sample_stack_user
|
||||||
in Linux 3.7.
|
in Linux 3.7.
|
||||||
.\" commit 1659d129ed014b715b0b2120e6fd929bdd33ed03
|
.\" commit 1659d129ed014b715b0b2120e6fd929bdd33ed03
|
||||||
|
.B PERF_ATTR_SIZE_VER4
|
||||||
|
is 104 corresponding to the addition of
|
||||||
|
.I sample_regs_intr
|
||||||
|
in Linux 3.19.
|
||||||
|
.\" commit 60e2364e60e86e81bc6377f49779779e6120977f
|
||||||
.TP
|
.TP
|
||||||
.I "config"
|
.I "config"
|
||||||
This specifies which event you want, in conjunction with
|
This specifies which event you want, in conjunction with
|
||||||
|
@ -752,6 +757,24 @@ event must be measured or no values will be recorded.
|
||||||
Also note that some perf_event measurements, such as sampled
|
Also note that some perf_event measurements, such as sampled
|
||||||
cycle counting, may cause extraneous aborts (by causing an
|
cycle counting, may cause extraneous aborts (by causing an
|
||||||
interrupt during a transaction).
|
interrupt during a transaction).
|
||||||
|
.TP
|
||||||
|
.BR PERF_SAMPLE_REGS_INTR " (since Linux 3.19)"
|
||||||
|
.\" commit 60e2364e60e86e81bc6377f49779779e6120977f
|
||||||
|
Records a subset of the current CPU register state
|
||||||
|
as specified by
|
||||||
|
.IR sample_regs_intr .
|
||||||
|
Unlike
|
||||||
|
.B PERF_SAMPLE_REGS_USER
|
||||||
|
the register values will return kernel register
|
||||||
|
state if the overflow happened while kernel
|
||||||
|
code is running.
|
||||||
|
If the CPU supports hardware sampling of
|
||||||
|
register state (i.e. PEBS on Intel x86) and
|
||||||
|
.I precise_ip
|
||||||
|
is set higher than zero then the register
|
||||||
|
values returned are those captured by
|
||||||
|
hardware at the time of the sampled
|
||||||
|
instruction's retirement.
|
||||||
.RE
|
.RE
|
||||||
.TP
|
.TP
|
||||||
.IR "read_format"
|
.IR "read_format"
|
||||||
|
@ -1855,6 +1878,9 @@ struct {
|
||||||
u64 weight; /* if PERF_SAMPLE_WEIGHT */
|
u64 weight; /* if PERF_SAMPLE_WEIGHT */
|
||||||
u64 data_src; /* if PERF_SAMPLE_DATA_SRC */
|
u64 data_src; /* if PERF_SAMPLE_DATA_SRC */
|
||||||
u64 transaction;/* if PERF_SAMPLE_TRANSACTION */
|
u64 transaction;/* if PERF_SAMPLE_TRANSACTION */
|
||||||
|
u64 abi; /* if PERF_SAMPLE_REGS_INTR */
|
||||||
|
u64 regs[weight(mask)];
|
||||||
|
/* if PERF_SAMPLE_REGS_INTR */
|
||||||
};
|
};
|
||||||
.fi
|
.fi
|
||||||
.RS 4
|
.RS 4
|
||||||
|
@ -2242,6 +2268,27 @@ the high 32 bits of the field by shifting right by
|
||||||
.B PERF_TXN_ABORT_SHIFT
|
.B PERF_TXN_ABORT_SHIFT
|
||||||
and masking with
|
and masking with
|
||||||
.BR PERF_TXN_ABORT_MASK .
|
.BR PERF_TXN_ABORT_MASK .
|
||||||
|
.TP
|
||||||
|
.IR abi ", " regs[weight(mask)]
|
||||||
|
If
|
||||||
|
.B PERF_SAMPLE_REGS_INTR
|
||||||
|
is enabled, then the user CPU registers are recorded.
|
||||||
|
|
||||||
|
The
|
||||||
|
.I abi
|
||||||
|
field is one of
|
||||||
|
.BR PERF_SAMPLE_REGS_ABI_NONE ", " PERF_SAMPLE_REGS_ABI_32 " or "
|
||||||
|
.BR PERF_SAMPLE_REGS_ABI_64 .
|
||||||
|
|
||||||
|
The
|
||||||
|
.I regs
|
||||||
|
field is an array of the CPU registers that were specified by
|
||||||
|
the
|
||||||
|
.I sample_regs_intr
|
||||||
|
attr field.
|
||||||
|
The number of values is the number of bits set in the
|
||||||
|
.I sample_regs_intr
|
||||||
|
bit mask.
|
||||||
.RE
|
.RE
|
||||||
.TP
|
.TP
|
||||||
.B PERF_RECORD_MMAP2
|
.B PERF_RECORD_MMAP2
|
||||||
|
|
Loading…
Reference in New Issue