[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 5/9] gcov: add new interface and 3.4 and 4.7 format support
On Mon, Oct 10, 2016 at 05:56:35AM -0600, Jan Beulich wrote: [...] > Who is 9 (more similar ones below)? > > > +static int counter_active(const struct gcov_info *info, unsigned int type) > > +{ > > + return info->merge[type] ? 1 : 0; > > Return type bool and preferably with !! instead of conditional > expression. > Andrew beat me to it: the code and data structures above are mostly imported from Linux. > > +size_t gcov_store_u32(void *buffer, size_t off, u32 v) > > +{ > > + u32 *data; > > Please be consistent wrt u32 vs ... > > > +static int gcov_info_dump_payload(const struct gcov_info *info, > > + XEN_GUEST_HANDLE_PARAM(char) buffer, > > + uint32_t *off) > > +{ > > + char *buf; > > + uint32_t buf_size; > > ... uint32_t (and alike; I'd suggest using only the latter, and I think > we should get rid of u32 / __u32 and their siblings eventually). > Right. I will switch to using uint32_t. > > +static uint32_t gcov_get_size(void) > > +{ > > + uint32_t total_size; > > + struct gcov_info *info = NULL; > > + > > + /* Magic number XCOV */ > > + total_size = sizeof(uint32_t); > > Again - can't this be the initializer? > Sure. I will move it up. > > +int sysctl_gcov_op(xen_sysctl_gcov_op_t *op) > > +{ > > + int ret; > > + > > + switch ( op->cmd ) > > + { > > + case XEN_SYSCTL_GCOV_get_size: > > + op->size = gcov_get_size(); > > + ret = 0; > > + break; > > + case XEN_SYSCTL_GCOV_read: > > Blank lines between non-fall-through case statements please. > OK. > > --- /dev/null > > +++ b/xen/common/gcov/gcov.h > > @@ -0,0 +1,36 @@ > > +#ifndef _GCOV_H_ > > +#define _GCOV_H_ > > + > > +#include <xen/guest_access.h> > > +#include <xen/types.h> > > + > > +/* > > + * Profiling data types used for gcc 3.4 and above - these are defined by > > + * gcc and need to be kept as close to the original definition as possible > > to > > + * remain compatible. > > + */ > > +#define GCOV_DATA_MAGIC ((unsigned int) 0x67636461) > > +#define GCOV_TAG_FUNCTION ((unsigned int) 0x01000000) > > +#define GCOV_TAG_COUNTER_BASE ((unsigned int) 0x01a10000) > > +#define GCOV_TAG_FOR_COUNTER(count) \ > > + _TAG_COUNTER_BASE + ((unsigned int) (count) << 17)) > > Stray blanks after casts. > Will fix. > > --- /dev/null > > +++ b/xen/common/gcov/gcov_base.c > > @@ -0,0 +1,64 @@ > > +/* > > + * Common code across gcov implementations > > + * > > + * Copyright Citrix Systems R&D UK > > + * Author(s): Wei Liu <wei.liu2@xxxxxxxxxx> > > + * > > + * Uses gcc-internal data definitions. > > + * Based on the gcov-kernel patch by: > > + * Hubertus Franke <frankeh@xxxxxxxxxx> > > + * Nigel Hinds <nhinds@xxxxxxxxxx> > > + * Rajan Ravindran <rajancr@xxxxxxxxxx> > > + * Peter Oberparleiter <oberpar@xxxxxxxxxxxxxxxxxx> > > + * Paul Larson > > + */ > > + > > +#include "gcov.h" > > + > > +/* > > + * __gcov_init is called by gcc-generated constructor code for each object > > + * file compiled with -fprofile-arcs. > > + * > > + * Although this function is called only during initialization is called > > from > > + * a .text section which is still present after initialization so not > > declare > > + * as __init. > > I don't follow - we do such references elsewhere, so I can't see a > reason not to follow that model here too as long the call here > happens before .init.* get discarded. > This is residual from previous implementation. I haven't checked if the statement is true or not. If this statement is not true I'm happy to make corresponding adjustments. > Having reached the end here - what if the user gets the Kconfig setting > wrong? Wouldn't it be helpful if the gcov_<major>_<minor>.c files > #error-ed upon an out of range gcc version? > That's a good idea. Wei. > Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |