[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 07/16] x86/VPMU: Add public xenpmu.h
>>> On 06.01.14 at 20:24, Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> wrote: > --- /dev/null > +++ b/xen/include/public/arch-x86/xenpmu.h > @@ -0,0 +1,74 @@ > +#ifndef __XEN_PUBLIC_ARCH_X86_PMU_H__ > +#define __XEN_PUBLIC_ARCH_X86_PMU_H__ > + > +/* x86-specific PMU definitions */ > +#include "xen.h" The comment looks like it is describing the #include, which it clearly isn't. Please have a blank line between them. > + > +/* Start of PMU register bank */ > +#define vpmu_reg_pointer(ctxt, offset) ((void *)((uintptr_t)ctxt + \ > + (uintptr_t)ctxt->offset)) This doesn't seem to belong in a public header. > + > +/* AMD PMU registers and structures */ > +struct amd_vpmu_context { > + uint64_t counters; /* Offset to counter MSRs */ > + uint64_t ctrls; /* Offset to control MSRs */ > + uint8_t msr_bitmap_set; /* Used by HVM only */ > +}; sizeof() of this structure will differ between 32- and 64-bit guests - are you intending to do the necessary translation even though it seems rather easy to avoid having to do so? > + > +/* Intel PMU registers and structures */ > +struct arch_cntr_pair { > + uint64_t counter; > + uint64_t control; > +}; > +struct core2_vpmu_context { Blank line missing between the two structures. > + uint64_t global_ctrl; > + uint64_t global_ovf_ctrl; > + uint64_t global_status; > + uint64_t fixed_ctrl; > + uint64_t ds_area; > + uint64_t pebs_enable; > + uint64_t debugctl; > + uint64_t fixed_counters; /* Offset to fixed counter MSRs */ > + uint64_t arch_counters; /* Offset to architectural counter MSRs */ > +}; > + > +/* ANSI-C does not support anonymous unions */ > +#if !defined(__GNUC__) || defined(__STRICT_ANSI__) > +#define __ANON_UNION_NAME(x) x > +#else > +#define __ANON_UNION_NAME(x) > +#endif Why? And if really needed, why here? > + > +#define XENPMU_MAX_CTXT_SZ (sizeof(struct amd_vpmu_context) > \ > + sizeof(struct core2_vpmu_context) ? \ > + sizeof(struct amd_vpmu_context) : \ > + sizeof(struct core2_vpmu_context)) > +#define XENPMU_CTXT_PAD_SZ (((XENPMU_MAX_CTXT_SZ + 64) & ~63) + 128) > +struct arch_xenpmu { > + union { > + struct cpu_user_regs regs; > + uint8_t pad1[256]; > + } __ANON_UNION_NAME(r); > + union { > + uint32_t lapic_lvtpc; > + uint64_t pad2; > + } __ANON_UNION_NAME(l); > + union { > + struct amd_vpmu_context amd; > + struct core2_vpmu_context intel; > + uint8_t pad3[XENPMU_CTXT_PAD_SZ]; > + } __ANON_UNION_NAME(c); I don't think there's be a severe problem if you simply always had names on these unions. > +}; > +typedef struct arch_xenpmu arch_xenpmu_t; Overall you should also prefix all types added to global scope with "xen". I know this wasn't done consistently for older headers, but we shouldn't be extending this name space cluttering. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |