diff options
author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2009-05-08 12:52:22 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-05-08 14:36:58 -0400 |
commit | 3df5edad87a998273aa5a9a8c728c05d855ad00e (patch) | |
tree | c8e8090b1fe518918ac85d92a172702e9544fa91 /include | |
parent | 7fc23a5380797012e92a9633169440f2f4a21253 (diff) |
perf_counter: rework ioctl()s
Corey noticed that ioctl()s on grouped counters didn't work on
the whole group. This extends the ioctl() interface to take a
second argument that is interpreted as a flags field. We then
provide PERF_IOC_FLAG_GROUP to toggle the behaviour.
Having this flag gives the greatest flexibility, allowing you
to individually enable/disable/reset counters in a group, or
all together.
[ Impact: fix group counter enable/disable semantics ]
Reported-by: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
LKML-Reference: <20090508170028.837558214@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/perf_counter.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/include/linux/perf_counter.h b/include/linux/perf_counter.h index 00081d84169f..88f863ec2748 100644 --- a/include/linux/perf_counter.h +++ b/include/linux/perf_counter.h | |||
@@ -157,10 +157,14 @@ struct perf_counter_hw_event { | |||
157 | /* | 157 | /* |
158 | * Ioctls that can be done on a perf counter fd: | 158 | * Ioctls that can be done on a perf counter fd: |
159 | */ | 159 | */ |
160 | #define PERF_COUNTER_IOC_ENABLE _IO ('$', 0) | 160 | #define PERF_COUNTER_IOC_ENABLE _IOW('$', 0, u32) |
161 | #define PERF_COUNTER_IOC_DISABLE _IO ('$', 1) | 161 | #define PERF_COUNTER_IOC_DISABLE _IOW('$', 1, u32) |
162 | #define PERF_COUNTER_IOC_REFRESH _IOW('$', 2, u32) | 162 | #define PERF_COUNTER_IOC_REFRESH _IOW('$', 2, u32) |
163 | #define PERF_COUNTER_IOC_RESET _IO ('$', 3) | 163 | #define PERF_COUNTER_IOC_RESET _IOW('$', 3, u32) |
164 | |||
165 | enum perf_counter_ioc_flags { | ||
166 | PERF_IOC_FLAG_GROUP = 1U << 0, | ||
167 | }; | ||
164 | 168 | ||
165 | /* | 169 | /* |
166 | * Structure of the page that can be mapped via mmap | 170 | * Structure of the page that can be mapped via mmap |