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
|
||||
samples */
|
||||
__u32 __reserved_2; /* Align to u64 */
|
||||
|
||||
__u64 sample_regs_intr; /* regs to dump on samples */
|
||||
};
|
||||
.fi
|
||||
.in
|
||||
|
@ -350,6 +350,11 @@ and
|
|||
.I sample_stack_user
|
||||
in Linux 3.7.
|
||||
.\" 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
|
||||
.I "config"
|
||||
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
|
||||
cycle counting, may cause extraneous aborts (by causing an
|
||||
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
|
||||
.TP
|
||||
.IR "read_format"
|
||||
|
@ -1855,6 +1878,9 @@ struct {
|
|||
u64 weight; /* if PERF_SAMPLE_WEIGHT */
|
||||
u64 data_src; /* if PERF_SAMPLE_DATA_SRC */
|
||||
u64 transaction;/* if PERF_SAMPLE_TRANSACTION */
|
||||
u64 abi; /* if PERF_SAMPLE_REGS_INTR */
|
||||
u64 regs[weight(mask)];
|
||||
/* if PERF_SAMPLE_REGS_INTR */
|
||||
};
|
||||
.fi
|
||||
.RS 4
|
||||
|
@ -2242,6 +2268,27 @@ the high 32 bits of the field by shifting right by
|
|||
.B PERF_TXN_ABORT_SHIFT
|
||||
and masking with
|
||||
.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
|
||||
.TP
|
||||
.B PERF_RECORD_MMAP2
|
||||
|
|
Loading…
Reference in New Issue