perf_event_open.2: Update PERF_IOC_FLAG_GROUP info

It turns out PERF_IOC_FLAG_GROUP was broken from 75f937f24bd9
(in Linux 2.6.31, the initial perf_event release) until
724b6daa1 (Linux 3.4).

I've done some extensive kernel source code digging plus
running tests of various kernels and I hope the info
presented is accurate now.

(Patch edited somewhat by mtk.)

Signed-off-by: Vince Weaver <vincent.weaver@maine.edu>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
Vince Weaver 2013-07-16 10:06:40 +02:00 committed by Michael Kerrisk
parent 6a387d0ecb
commit dbc01ecdff
1 changed files with 13 additions and 11 deletions

View File

@ -24,7 +24,7 @@
.\" This document is based on the perf_event.h header file, the
.\" tools/perf/design.txt file, and a lot of bitter experience.
.\"
.TH PERF_EVENT_OPEN 2 2013-07-02 "Linux" "Linux Programmer's Manual"
.TH PERF_EVENT_OPEN 2 2013-07-16 "Linux" "Linux Programmer's Manual"
.SH NAME
perf_event_open \- set up performance monitoring
.SH SYNOPSIS
@ -1839,7 +1839,8 @@ file descriptor argument.
If the
.B PERF_IOC_FLAG_GROUP
bit is set in the ioctl argument, then all events in a group are
enabled, even if the event specified is not the group leader.
enabled, even if the event specified is not the group leader
(but see BUGS).
.TP
.B PERF_EVENT_IOC_DISABLE
Disables the individual counter or event group specified by the
@ -1855,7 +1856,8 @@ stops that counter from counting but doesn't affect any other counter.
If the
.B PERF_IOC_FLAG_GROUP
bit is set in the ioctl argument, then all events in a group are
disabled, even if the event specified is not the group leader.
disabled, even if the event specified is not the group leader
(but see BUGS).
.TP
.B PERF_EVENT_IOC_REFRESH
Non-inherited overflow counters can use this
@ -1884,14 +1886,8 @@ values.
If the
.B PERF_IOC_FLAG_GROUP
bit is set in the ioctl argument, then all events in a group are
reset, even if the event specified is not the group leader.
If the
.B PERF_IOC_FLAG_GROUP
bit is not set, then the behavior is somewhat unexpected:
when sent to a group leader only the leader is reset
(children are left alone);
when sent to a child all events in a group are reset.
reset, even if the event specified is not the group leader
(but see BUGS).
.TP
.B PERF_EVENT_IOC_PERIOD
IOC_PERIOD is the command to update the period; it
@ -2078,6 +2074,12 @@ Linux 2.6.36 and Linux 3.0 that ignores the
was chosen if the union has a
non-zero value in it.
From Linux 2.6.31 to Linux 3.4, the
.B PERF_IOC_FLAG_GROUP
ioctl argument was broken and would repeatedly operate
on the event specified rather than iterating across
all sibling events in a group.
Always double-check your results!
Various generalized events have had wrong values.
For example, retired branches measured