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>
This commit is contained in:
Peter Zijlstra
2009-05-05 17:50:22 +02:00
committed by Ingo Molnar
parent 066d7dea32
commit c66de4a5be
2 changed files with 12 additions and 12 deletions
+3 -1
View File
@@ -362,9 +362,11 @@ struct perf_mmap_data {
atomic_t head; /* write position */
atomic_t events; /* event limit */
atomic_t wakeup_head; /* completed head */
atomic_t done_head; /* completed head */
atomic_t lock; /* concurrent writes */
atomic_t wakeup; /* needs a wakeup */
struct perf_counter_mmap_page *user_page;
void *data_pages[0];
};