[PATCH] Cygwin: define byteswap.h inlines as macros

Corinna Vinschen corinna-cygwin@cygwin.com
Tue Mar 15 11:46:00 GMT 2016


On Mar 15 11:55, Václav Haisman wrote:
> On 15 March 2016 at 04:13, Yaakov Selkowitz <yselkowi@redhat.com> wrote:
> > The bswap_* "functions" are macros in glibc, so they may be tested for
> > by the preprocessor (e.g. #ifdef bswap_16).
> >
> > Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
> > ---
> >  winsup/cygwin/include/byteswap.h | 14 +++++++++-----
> >  1 file changed, 9 insertions(+), 5 deletions(-)
> >
> > diff --git a/winsup/cygwin/include/byteswap.h b/winsup/cygwin/include/byteswap.h
> > index cd5a726..9f73c5a 100644
> > --- a/winsup/cygwin/include/byteswap.h
> > +++ b/winsup/cygwin/include/byteswap.h
> > @@ -16,23 +16,27 @@ extern "C" {
> >  #endif
> >
> >  static __inline unsigned short
> > -bswap_16 (unsigned short __x)
> > +__bswap_16 (unsigned short __x)
> >  {
> >    return (__x >> 8) | (__x << 8);
> >  }
> >
> >  static __inline unsigned int
> > -bswap_32 (unsigned int __x)
> > +__bswap_32 (unsigned int __x)
> >  {
> > -  return (bswap_16 (__x & 0xffff) << 16) | (bswap_16 (__x >> 16));
> > +  return (__bswap_16 (__x & 0xffff) << 16) | (__bswap_16 (__x >> 16));
> >  }
> >
> >  static __inline unsigned long long
> > -bswap_64 (unsigned long long __x)
> > +__bswap_64 (unsigned long long __x)
> >  {
> > -  return (((unsigned long long) bswap_32 (__x & 0xffffffffull)) << 32) | (bswap_32 (__x >> 32));
> > +  return (((unsigned long long) __bswap_32 (__x & 0xffffffffull)) << 32) | (__bswap_32 (__x >> 32));
> >  }
> >
> > +#define bswap_16(x) __bswap_16(x)
> > +#define bswap_32(x) __bswap_32(x)
> > +#define bswap_64(x) __bswap_64(x)
> > +
> >  #ifdef __cplusplus
> >  }
> >  #endif
> > --
> > 2.7.0
> >
> 
> Would it not be better to leave the original functions as they were
> and simply use these defines?
> 
> #define bswap_16 bswap_16
> #define bswap_32 bswap_32
> #define bswap_64 bswap_64
> 
> I believe this is valid C and C++. Untested.

Yes, that would work.  Glibc defines the inlined functions with leading
underscores as well, though.  Maybe we should do the same because some
strange application wants to use the underscored versions?


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20160315/8df71d99/attachment.sig>


More information about the Cygwin-patches mailing list