|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC PATCH] Adding support for coverage informations
>>> On 28.01.13 at 22:16, Frediano Ziglio <frediano.ziglio@xxxxxxxxxx> wrote:
> This patch introduce coverage support to Xen.
> Currently it allows to compile Xen with coverage support but there is no way
> to extract them.
>
> The declarations came from Linux source files (as you can see from file
> headers).
>
> It also add a new hypercall (can somebody reserve a number for this stuff?).
>
> The idea is to have some operations mainly
> - get filename
> - get count informations for a file
> - reset counter for a specific file
> - reset all counters
The description you give doesn't really tell me what all this will
really buy us. And considering that the patch enables this by
default, I think I'd prefer to know...
> The op parameter in the hypercall will be the operation.
> The idx parameter is the index to the file.
> The arg1 is the argument (a buffer pointer for filename or counters).
> The arg2 probably will be the size of previous buffer.
>
> Do you think I should pack these parameters and pass a single pointer?
I don't see a need.
> Linux use a file system to export these information. I would use the same
> format as Linux use so to make it easy to reuse tools from Linux (like
> lcov).
> That the reason why I split get filename from get counter informations.
>
> These informations cannot be put in a specific section (allowing a safe
> mapping)
> as gcc use .rodata, .data, .text and .ctors sections.
What are you trying to tell us here?
> I added code to handle constructors used in this case to initialize a linked
> list of files.
>
> Do anybody know why I had to exclude %.init.o files to make it compile?
Without you telling us what problems not doing so causes, no.
> Are these files used before Xen start?
No, they're containing code that's being used only during boot
(when whole files are init-only, we can also move the e.g. string
literals into .init.* sections).
> --- a/xen/arch/x86/xen.lds.S Tue Jan 22 09:33:10 2013 +0100
> +++ b/xen/arch/x86/xen.lds.S Mon Jan 28 17:36:14 2013 +0000
> @@ -78,7 +78,23 @@ SECTIONS
> *(.data)
> *(.data.rel)
> *(.data.rel.*)
> - CONSTRUCTORS
> +#ifdef __x86_64__
> + . = ALIGN(8);
> + __CTOR_LIST__ = .;
> + QUAD((__CTOR_END__ - __CTOR_LIST__) / 8 - 2)
> + *(.ctors)
> + CONSTRUCTORS
This doesn't look right: Even if CONSTRUCTORS is presumably
producing nothing right now, you change its treatment by moving
it inside the __CTOR_{LIST,END}__ range. Linux has
CONSTRUCTORS and *(.ctors) separate too, and (validly) puts
.ctors inside the .init.data section.
> + QUAD(0)
> + __CTOR_END__ = .;
> +#else
> + . = ALIGN(4);
> + __CTOR_LIST__ = .;
> + LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
> + *(.ctors)
> + CONSTRUCTORS
> + LONG(0)
> + __CTOR_END__ = .;
> +#endif
What case is this #else portion trying to address?
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/xen/common/gcov/gcov.c Mon Jan 28 17:36:14 2013 +0000
Please decide for a consistent coding style in the newly added
files - either all Linux or all Xen, but not a mixture of both.
> +#ifdef CONFIG_COMPAT
> +int compat_coverage_op(int op, int idx, XEN_GUEST_HANDLE_PARAM(void) uarg,
> int arg2)
> +{
> + return -EINVAL;
> +}
> +#endif
By suitably defining the interface structures you can avoid the
need for a separate compat handler.
> +#ifdef TEST_COVERAGE
> +void __init init_coverage(void);
No __init annotations in declarations please (they only belong on
the actual definition).
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |