|
@@ -1887,12 +1887,6 @@ rb_event_index(struct ring_buffer_event *event)
|
|
return (addr & ~PAGE_MASK) - BUF_PAGE_HDR_SIZE;
|
|
return (addr & ~PAGE_MASK) - BUF_PAGE_HDR_SIZE;
|
|
}
|
|
}
|
|
|
|
|
|
-static void rb_reset_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
|
|
|
|
-{
|
|
|
|
- cpu_buffer->read_stamp = cpu_buffer->reader_page->page->time_stamp;
|
|
|
|
- cpu_buffer->reader_page->read = 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static void rb_inc_iter(struct ring_buffer_iter *iter)
|
|
static void rb_inc_iter(struct ring_buffer_iter *iter)
|
|
{
|
|
{
|
|
struct ring_buffer_per_cpu *cpu_buffer = iter->cpu_buffer;
|
|
struct ring_buffer_per_cpu *cpu_buffer = iter->cpu_buffer;
|
|
@@ -3626,7 +3620,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
|
|
|
|
|
|
/* Finally update the reader page to the new head */
|
|
/* Finally update the reader page to the new head */
|
|
cpu_buffer->reader_page = reader;
|
|
cpu_buffer->reader_page = reader;
|
|
- rb_reset_reader_page(cpu_buffer);
|
|
|
|
|
|
+ cpu_buffer->reader_page->read = 0;
|
|
|
|
|
|
if (overwrite != cpu_buffer->last_overrun) {
|
|
if (overwrite != cpu_buffer->last_overrun) {
|
|
cpu_buffer->lost_events = overwrite - cpu_buffer->last_overrun;
|
|
cpu_buffer->lost_events = overwrite - cpu_buffer->last_overrun;
|
|
@@ -3636,6 +3630,10 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
|
|
goto again;
|
|
goto again;
|
|
|
|
|
|
out:
|
|
out:
|
|
|
|
+ /* Update the read_stamp on the first event */
|
|
|
|
+ if (reader && reader->read == 0)
|
|
|
|
+ cpu_buffer->read_stamp = reader->page->time_stamp;
|
|
|
|
+
|
|
arch_spin_unlock(&cpu_buffer->lock);
|
|
arch_spin_unlock(&cpu_buffer->lock);
|
|
local_irq_restore(flags);
|
|
local_irq_restore(flags);
|
|
|
|
|