Re: [PATCH 3/3] kbuffer: Update kbuf->next in kbuffer_refresh()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 08, 2024 at 11:28:53AM -0500, Steven Rostedt wrote:
> On Mon, 8 Jan 2024 11:11:29 +0000
> Vincent Donnefort <vdonnefort@xxxxxxxxxx> wrote:
> 
> > Yeah it seems that the update_pointers() is not enough. 
> > 
> > kbuffer_next_event(kbuf, NULL) will make sure curr is also up to date and will
> > do the update until an event type we can read. With that change I don't see any
> > spurious "mmiotrace_rw" on the output.
> 
> 
> Ah you're right. Try this.
> 
> -- Steve
> 
> diff --git a/src/kbuffer-parse.c b/src/kbuffer-parse.c
> index 1e1d168..5651797 100644
> --- a/src/kbuffer-parse.c
> +++ b/src/kbuffer-parse.c
> @@ -180,6 +180,7 @@ static int calc_index(struct kbuffer *kbuf, void *ptr)
>  	return (unsigned long)ptr - (unsigned long)kbuf->data;
>  }
>  
> +static int next_event(struct kbuffer *kbuf);
>  static int __next_event(struct kbuffer *kbuf);
>  
>  /*
> @@ -323,12 +324,8 @@ int kbuffer_refresh(struct kbuffer *kbuf)
>  	kbuf->size = (unsigned int)flags & COMMIT_MASK;
>  
>  	/* Update next to be the next element */
> -	if (kbuf->size != old_size && kbuf->curr == old_size) {
> -		if (kbuf->flags & KBUFFER_FL_OLD_FORMAT)
> -			old_update_pointers(kbuf);
> -		else
> -			update_pointers(kbuf);
> -	}
> +	if (kbuf->size != old_size && kbuf->curr == kbuf->next)
> +		next_event(kbuf);
>  
>  	return 0;
>  }

That worked!




[Index of Archives]     [Linux USB Development]     [Linux USB Development]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux