|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 3/4] xen: refactor debugtrace data
On 28.08.2019 10:00, Juergen Gross wrote:
> As a preparation for per-cpu buffers do a little refactoring of the
> debugtrace data: put the needed buffer admin data into the buffer as
> it will be needed for each buffer.
>
> While at it switch debugtrace_send_to_console and debugtrace_used to
> bool and delete an empty line.
>
> Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
> ---
> xen/common/debugtrace.c | 62
> ++++++++++++++++++++++++++++---------------------
> 1 file changed, 35 insertions(+), 27 deletions(-)
>
> diff --git a/xen/common/debugtrace.c b/xen/common/debugtrace.c
> index a2fab0d72c..7a9e4fb99f 100644
> --- a/xen/common/debugtrace.c
> +++ b/xen/common/debugtrace.c
> @@ -15,33 +15,39 @@
> #include <xen/watchdog.h>
>
> /* Send output direct to console, or buffer it? */
> -static volatile int debugtrace_send_to_console;
> +static volatile bool debugtrace_send_to_console;
>
> -static char *debugtrace_buf; /* Debug-trace buffer */
> -static unsigned int debugtrace_prd; /* Producer index */
> -static unsigned int debugtrace_kilobytes = 128, debugtrace_bytes;
> -static unsigned int debugtrace_used;
> +struct debugtrace_data_s {
Is the _s suffix really needed for some reason?
> + unsigned long bytes; /* Size of buffer. */
> + unsigned long prd; /* Producer index. */
Seeing that you switch from int to long here - are you really
fancying these buffers to go beyond 4GiB in size?
> + char buf[];
> +};
> +
> +static struct debugtrace_data_s *debtr_data;
How about s/debtr/dt/ or s/debtr/debugtrace/ ?
> +static unsigned int debugtrace_kilobytes = 128;
Since you touch this anyway, add __initdata? Maybe also move it
next to its integer_param()?
> +static bool debugtrace_used;
> static DEFINE_SPINLOCK(debugtrace_lock);
> integer_param("debugtrace", debugtrace_kilobytes);
>
> static void debugtrace_dump_worker(void)
> {
> - if ( (debugtrace_bytes == 0) || !debugtrace_used )
> + if ( !debtr_data || !debugtrace_used )
> return;
Why don't you get rid of the left side of the || altogether?
> @@ -165,12 +171,14 @@ static int __init debugtrace_init(void)
> return 0;
>
> order = get_order_from_bytes(bytes);
> - debugtrace_buf = alloc_xenheap_pages(order, 0);
> - ASSERT(debugtrace_buf != NULL);
> + data = alloc_xenheap_pages(order, 0);
> + if ( !data )
> + return -ENOMEM;
>
> - memset(debugtrace_buf, '\0', bytes);
> + memset(data, '\0', bytes);
>
> - debugtrace_bytes = bytes;
> + data->bytes = bytes - sizeof(*data);
> + debtr_data = data;
The allocation may end up being almost twice as big as what gets
actually used this way. Wouldn't it make sense to re-calculate
"bytes" from "order"?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |