Re: [KJ][PATCH] BIT macro cleanup

From: Milind Arun Choudhary
Date: Fri Mar 30 2007 - 08:31:28 EST


On 3/29/07, Richard Knutsson <ricknu-0@xxxxxxxxxxxxxx> wrote:
Alexey Dobriyan wrote:
> On Wed, Mar 28, 2007 at 09:03:09AM +0530, Milind Arun Choudhary wrote:
>
>> +#define BIT(nr) (1UL << ((nr) % BITS_PER_LONG))
>>
>
> I think this would be a disaster because something like
>
> BIT(123)
>
> would not even generate a warning.
>
There were a discussion on this, at KJ, when BIT was first used with a
modular operation. I said the same thing as you do now, but a big user
of BIT is the input-subsystem who defined their BIT as above. Also it
was mentioned that the compiler can only find the statical errors, a
variable input can break it in runtime.
+ if we _really_ want to check the tree for such warnings, it is easy to
remove the modular operation temporarily (and keep away of input/)

I don't say I like this, just that it is a choose between possible errors.
as discussed in earlier thread there are two kinds of users of BIT
1. input sybsystem which needs the "% BITS_PER_LONG"
2. & all other who don't, so that they are warned when the bit no overflows
I think a simple macro cant serve both the purposes

so IMHO there should be two macros
+#define BIT(nr) (1UL << (nr))
which server the first case

&
+#define XXXBITXXX(nr) (1UL << ((nr) % BITS_PER_LONG))
for input users
earlier i suggested a name BITWRAP
but some people hate it i think
'm fine with any other name as well
inputs....suggest a name

so that we can still keep these two macros (along with LLBIT) in
bitops.h & use apporpriately

only hassle is the whole input tree is to be searched & replaced for BIT
is this OK

--
Milind Arun Choudhary
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/