Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Jun 2006 21:47:25 +0400
From:      Yar Tikhiy <yar@comp.chem.msu.su>
To:        Andrew Reilly <andrew-freebsd@areilly.bpc-users.org>
Cc:        arch@freebsd.org, Poul-Henning Kamp <phk@phk.freebsd.dk>
Subject:   Re: SET, CLR, ISSET in types.h for _KERNEL builds
Message-ID:  <20060628174725.GA57252@comp.chem.msu.su>
In-Reply-To: <20060628100824.GA1326@duncan.reilly.home>
References:  <20060628094221.GA50978@comp.chem.msu.su> <75461.1151488426@critter.freebsd.dk> <20060628100824.GA1326@duncan.reilly.home>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jun 28, 2006 at 08:08:24PM +1000, Andrew Reilly wrote:
> On Wed, Jun 28, 2006 at 09:53:46AM +0000, Poul-Henning Kamp wrote:
> > In message <20060628094221.GA50978@comp.chem.msu.su>, Yar Tikhiy writes:
> > >On Tue, Jun 27, 2006 at 01:58:17PM -0600, M. Warner Losh wrote:
> > 
> > >> NetBSD recently added SET, CLR, ISSET to sys/types.h (only if _KERNEL
> > >> is defined).
> > 
> > As one of the people who have worked with the original /bin/sh source
> > code, I have a slight alergic reaction to attempts to paste over
> > the implementation language with macros like these.
> > 
> > Setting a bit in 'C' is spelled 
> > 	variable |= bit;
> > not
> > 	SET(variable, bit);
> 
> To my eye, if you're going to use "bit" to describe which bit is
> being operated on, then you should *really* be doing:
> 	variable |= (1 << bit)
> and, obviously, SET(variable, bit) should do that, rather than
> what has been proposed.

That would require converting our device .h files from defining bit
masks to defining bit numbers.  I don't mind you doing that as long
as SET is expanded to:

	((variable) |= (1 << (bit)))

-- note the bunch of roughly balanced parentheses ;-)

-- 
Yar



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