|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 06/10] x86: Introduce a new function to get capability of Intel PT
> >> >> > +#define IPT_CAP(_n, _l, _r, _m) \
> >> >> > + [IPT_CAP_ ## _n] = { .name = __stringify(_n), .leaf = _l, \
> >> >> > + .reg = _r, .mask = _m }
> >> >> > +
> >> >> > +static struct ipt_cap_desc {
> >> >> > + const char *name;
> >> >> > + unsigned int leaf;
> >> >> > + unsigned char reg;
> >> >>
> >> >> I don't think leaf needs to be full 32 bits wide? Once shrunk by
> >> >> at least two bits, the size of the overall structure could go down from
> >> >> 24 to 16 bytes.
> >> >
> >> > OK, will change it from " unsigned int " to "unsinged char".
> >>
> >> I'd prefer if you used bit fields, as was meant to be implied by my reply.
> >
> > like this? If two bits is too few for "leaf"?
> >
> > static const struct ipt_cap_desc {
> > const char *name;
> > unsigned char leaf:2;
> > unsigned char reg:2;
> > unsinged int mask;
> > }
>
> Yes. As suggested before I'd use more bits for leaf, to avoid this needing to
> change immediately once a new leaf becomes known.
> After all the goal is only to have leaf and reg together fit in 32 bits.
> Making leaf 8 bits wide for now would likely help generated code.
> And please don't use unsigned char in cases like this where you don't really
> need the more narrow type - be as close to what the
> standard allows without extensions as possible; IOW unsigned int here.
>
static const struct ipt_cap_desc {
const char *name;
unsigned int leaf:8;
unsigned int reg:2;
unsinged int mask;
}
Thanks,
Luwei Kang
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |