Re: [PATCH v4 09/22] perf: Support overwrite mode for AUX area

From: Peter Zijlstra
Date: Tue Sep 09 2014 - 04:44:49 EST


On Wed, Aug 20, 2014 at 03:36:06PM +0300, Alexander Shishkin wrote:

> diff --git a/kernel/events/ring_buffer.c b/kernel/events/ring_buffer.c
> index 925f369947..5006caba63 100644
> --- a/kernel/events/ring_buffer.c
> +++ b/kernel/events/ring_buffer.c

> @@ -294,9 +295,22 @@ void perf_aux_output_end(struct perf_output_handle *handle, unsigned long size,
> bool truncated)
> {
> struct ring_buffer *rb = handle->rb;
> + unsigned long aux_head;
>
> + aux_head = local_read(&rb->aux_head);
> +
> + if (rb->aux_overwrite) {
> + local_set(&rb->aux_head, size);
> +
> + /*
> + * Send a RECORD_AUX with size==0 to communicate aux_head
> + * of this snapshot to userspace
> + */
> + perf_event_aux_event(handle->event, size, 0, truncated);

Humm.. why not write a 'normal' AUX record?

Also, you didn't mention this in your Changelog _at_all_.

> + } else {
> + local_add(size, &rb->aux_head);
> + perf_event_aux_event(handle->event, aux_head, size, truncated);
> + }
>
> smp_wmb();
> rb->user_page->aux_head = local_read(&rb->aux_head);

Attachment: pgp1zlowD_Lhn.pgp
Description: PGP signature