On 10/29/12 02:52, Tejun Heo wrote:
On Sun, Oct 28, 2012 at 06:47:22PM -0700, Tejun Heo wrote:
On Fri, Oct 26, 2012 at 02:01:23PM +0200, Bart Van Assche wrote:
Code like "drain |= q->nr_rqs[i]" might result in blk_drain_queue()
to finish early if the expression at the RHS is a multiple of 256
since the drain variable is only eight bits wide. Avoid this by
changing the type of the drain variable from bool into unsigned.
No, it doesn't happen that way. One of the reasons we have bool at
all is to avoid this type of problems caused by implicit type-casting.
Why do you keep pushing this? It's WRONG. Please drop it.
From C99 std draft.
6.3 Conversions
6.3.1.2 Boolean type
When any scalar value is converted to _Bool, the result is 0 if the
value compares equal to 0; otherwise, the result is 1.
It doesn't care the width or signedness of the type being converted.
If the origin value equals zero, it converts to 0; otherwise 1.
For one or another reason I was assuming that bool was a typedef for
unsigned char. But you are right, it's a synonym for the C99 type _Bool
so I'll drop this patch.
Bart.
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html