Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 5 Apr 2003 10:34:36 +0300
From:      Ruslan Ermilov <ru@FreeBSD.org>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        Mike Barcroft <mike@FreeBSD.org>
Subject:   Re: cvs commit: src/sys/sys endian.h src/share/man/man9 byteorder.9
Message-ID:  <20030405073436.GC52420@sunbay.com>
In-Reply-To: <20030405164849.Y37179@gamplex.bde.org>
References:  <Pine.BSF.4.21.0304041150530.17052-100000@root.org> <20030405164849.Y37179@gamplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--mSxgbZZZvrAyzONB
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Sat, Apr 05, 2003 at 04:55:26PM +1000, Bruce Evans wrote:
> On Fri, 4 Apr 2003, Nate Lawson wrote:
>=20
> > On Fri, 4 Apr 2003, Ruslan Ermilov wrote:
> > > +#define	BSWAP16(x)	(uint16_t) \
> > > +	(((x) >> 8) | ((x) << 8))
> > > +
> > > +#define	BSWAP32(x)	(uint32_t) \
> > > +	(((x) >> 24) | (((x) >> 8) & 0xff00) | \
> > > +	(((x) << 8) & 0xff0000) | ((x) << 24))
>=20
> > I don't mind the addition of the macros but I don't like the
> > implementation.  Too many unnecessary casts and overly complicated.
>=20
> I fear it has not enough necessary casts :-).  E.g., if x =3D (int16_t)0x=
fffe,
> then on 32-bit machines sign extension gives 0xffffffff for BSWAP16(x).
> Of course, BSWAP16()'s arg should be precisely uint16_t,

Yes, this is assumed.

> but the function
> interfaces don't require it to have the correct type except possibly on
> non-2's complement machines where coercing the arg's type may cause
> surprising changes to the arg's value.
>=20
> Bruce

--=20
Ruslan Ermilov		Sysadmin and DBA,
ru@sunbay.com		Sunbay Software AG,
ru@FreeBSD.org		FreeBSD committer,
+380.652.512.251	Simferopol, Ukraine

http://www.FreeBSD.org	The Power To Serve
http://www.oracle.com	Enabling The Information Age

--mSxgbZZZvrAyzONB
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (FreeBSD)

iD8DBQE+jocMUkv4P6juNwoRAmLDAJ9Wn1LqW0kYum80wCldYR575K+wugCcD5ie
kUsECNItgm69ahsmwinsS9g=
=znhp
-----END PGP SIGNATURE-----

--mSxgbZZZvrAyzONB--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030405073436.GC52420>