[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v11 3/9] xen: introduce DECLARE_BOUNDS



On Wed, 6 Mar 2019, Jan Beulich wrote:
> > +static inline ptrdiff_t name ## _diff(const type s1[],                     
> >    \
> > +                                      const struct abstract_ ## name s2[]) 
> >    \
> > +{                                                                          
> >    \
> > +    BUILD_BUG_ON(alignof(*s1) != alignof(*s2));                            
> >    \
> > +    return (ptrdiff_t)((uintptr_t)s2 - (uintptr_t)s1) /                    
> >    \
> > +           (ptrdiff_t)sizeof(*s1);                                         
> >     \
> > +}                                                                          
> >  
> 
> I had specifically asked for this to simply call _bytediff, to limit
> redundancy and in particular the total number of casts.
> 
> > +static inline ptrdiff_t name ## _bytediff(const type s1[],                 
> >    \
> > +                                          const struct abstract_ ## name 
> > s2[])\
> > +{                                                                          
> >    \
> > +    BUILD_BUG_ON(alignof(*s1) != alignof(*s2));                            
> >    \
> > +    return (ptrdiff_t)((uintptr_t)s2 - (uintptr_t)s1);                     
> >    \
> > +}
> 
> What's the value of the intermediate casting to uintptr_t? Why not
> cast to ptrdiff_t right away?

uintptr_t is the integer type corresponding to a pointer, so we should
use uintptr_t first. ptrdiff_t is the difference type so we should cast
to it afterwards. Specifically, uintptr_t is unsigned and ptrdiff_t is
signed. So I don't think it would be correct to do:

  return (ptrdiff_t)((ptrdiff_t)s2 - (ptrdiff_t)s1);

Or am I missing your point?


I'll address all the other comments.


> I also don't think the BUILD_BUG_ON() is helpful in this latter case.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.