Re: [PATCH] 2.4.21-rc1 pointless IDE noise reduction

Timothy Miller (miller@techsource.com)
Thu, 24 Apr 2003 12:31:06 -0400


Richard B. Johnson wrote:

>On Thu, 24 Apr 2003, Chuck Ebbert wrote:
>
>
>
>>Jens Axboe wrote:
>>
>>
>>
>>
>>>>+ return((drive->id->cfs_enable_1 & 0x0400) ? 1 : 0);
>>>> }
>>>>
>>>>
>>>Seconded, it causes a lot more confusion than it does good.
>>>
>>>
>> The return looks like a function call in that last line.
>>
>> That's one of the few things I find really annoying -- extra parens
>>are fine when they make code clearer, but not there.
>>
>>
>>-------
>> Chuck [ C Style Police, badge #666 ]
>>
>>
>
>return((drive->id->cfs_enable_1 & 0x0400) ? 1 : 0);
> ^^^^^^|__________ wtf?
>These undefined numbers in the code are much more annoying to me...
>but I don't have a C Style Police Badge.
>
>Also, whatever that is, 0x400, I'll call it MASK, can have shorter
>code like:
>
> return (drive->id->cfs_enable_1 && MASK); // TRUE/FALSE
>... for pedantics...
> return (int) (drive->id->cfs_enable_1 && MASK);
>
>
>
>

That wouldn't work, because && isn't a bitwise operator. But I agree
that the ( x ? 1 : 0 ) method may not be very efficient, because it may
involve branches.

Two alternatives:

(a) !!(x & 0x400)

(b) (x & 0x400) >> 10

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