aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorPeter Zijlstra <a.p.zijlstra@chello.nl>2009-05-05 11:50:22 -0400
committerIngo Molnar <mingo@elte.hu>2009-05-05 14:18:30 -0400
commitc66de4a5be7913247bd83d79168f8e4420c9cfbc (patch)
treec671172166d94be75ad9d6df1fdafa0c006c4609 /include/linux
parent066d7dea32c9bffe6decc0abe465627656cdd84e (diff)
perf_counter: uncouple data_head updates from wakeups
Keep data_head up-to-date irrespective of notifications. This fixes the case where you disable a counter and don't get a notification for the last few pending events, and it also allows polling usage. [ Impact: increase precision of perfcounter mmap-ed fields ] Suggested-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: <20090505155436.925084300@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/perf_counter.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/include/linux/perf_counter.h b/include/linux/perf_counter.h
index a356fa69796c..17b63105f2aa 100644
--- a/include/linux/perf_counter.h
+++ b/include/linux/perf_counter.h
@@ -362,9 +362,11 @@ struct perf_mmap_data {
362 atomic_t head; /* write position */ 362 atomic_t head; /* write position */
363 atomic_t events; /* event limit */ 363 atomic_t events; /* event limit */
364 364
365 atomic_t wakeup_head; /* completed head */ 365 atomic_t done_head; /* completed head */
366 atomic_t lock; /* concurrent writes */ 366 atomic_t lock; /* concurrent writes */
367 367
368 atomic_t wakeup; /* needs a wakeup */
369
368 struct perf_counter_mmap_page *user_page; 370 struct perf_counter_mmap_page *user_page;
369 void *data_pages[0]; 371 void *data_pages[0];
370}; 372};