|
@@ -199,13 +199,15 @@ void perf_output_end(struct perf_output_handle *handle)
|
|
|
struct perf_event *event = handle->event;
|
|
|
struct ring_buffer *rb = handle->rb;
|
|
|
|
|
|
- int wakeup_events = event->attr.wakeup_events;
|
|
|
-
|
|
|
- if (handle->sample && wakeup_events) {
|
|
|
- int events = local_inc_return(&rb->events);
|
|
|
- if (events >= wakeup_events) {
|
|
|
- local_sub(wakeup_events, &rb->events);
|
|
|
- local_inc(&rb->wakeup);
|
|
|
+ if (handle->sample && !event->attr.watermark) {
|
|
|
+ int wakeup_events = event->attr.wakeup_events;
|
|
|
+
|
|
|
+ if (wakeup_events) {
|
|
|
+ int events = local_inc_return(&rb->events);
|
|
|
+ if (events >= wakeup_events) {
|
|
|
+ local_sub(wakeup_events, &rb->events);
|
|
|
+ local_inc(&rb->wakeup);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|