On Fri, 2007-02-16 at 19:04 +0100, Richard Knutsson wrote:But it is (hopefully) a one-time change.
James Bottomley wrote:
On Mon, 2007-02-12 at 12:27 -0800, Andrew Morton wrote:Have been some work done already. Has there been any problems?
Given that we now have a standard kernel-wide, c99-friendly way ofOK, I'm really not happy with doing this for three reasons:
expressing true and false, I'd suggest that this decision can be revisited.
Because a "true" is significantly more meaningful (and hence readable)
thing than a bare "1".
1. It's inviting huge amounts of driver churn changing bitfields to
booleans
There's always an issue when two people work on the same driver ... it
causes patch conflicts, which is why we try to avoid it where we can.
Your "simple bitfields" :)2. I do find it to be a readability issue. Like most driver writers,It is a fundamental difference between an integer and a boolean. Have you seen anyone trying to do "bool var = true + true;"? ;)
I'm used to register layouts, and those are simple bitfields, so I don't
tend to think true and false, I think 1 and 0.
I don't quite see how this is relevant to the readability issue?
Actually I find it to be simpler. Which would you chose?:3. Having a different, special, type for single bit bitfields (whileI don't think a boolean should be view as a single bit bitfield. Ex:
still using u<n> for multi bit bitfields) is asking for confusion, and
hence trouble at the driver level.
u8 a:1;
...
int b = 4 + a;
is obviously not a boolean, while:
u8 a:1;
...
if (a)
is, and a should be "bool a:1;" (imho)
This again, doesn't really address the argument. I'm saying I'd rather
not have confusion over what types to use in the driver. You're saying
that if you only check the value for truth or falsehood it should be a
boolean. That's actually worse than I was anticipating because you're
now saying that single bit bitfields may or may not be booleans
depending on use. This looks like worse potential for confusion than
before.