Messages in this thread | | | From | "Chen, Kenneth W" <> | Subject | RE: [PATCH 1/12] generic *_bit() | Date | Wed, 1 Feb 2006 13:41:03 -0800 |
| |
Grant Grundler wrote on Wednesday, February 01, 2006 11:40 AM > On Wed, Feb 01, 2006 at 10:07:28AM -0800, Chen, Kenneth W wrote: > > I think these should be defined to operate on arrays of unsigned int. > > Bit is a bit, no matter how many byte you load (8/16/32/64), you can > > only operate on just one bit. > > Well, if it doesn't matter, why is unsigned int better?
I was coming from the angle of having bitop operate on unsigned int *, so people don't have to type cast or change bit flag variable to unsigned long for various structures. With unsigned int type for bit flag, some of them are not even close to fully utilized. for example:
thread_info->flags uses 18 bits thread_struct->flags uses 7 bits
It's a waste of memory to define a variable that kernel will *never* touch the 4 MSB in that field.
> unsigned long is typically the native register size, right? > I'd expect that to be more efficient on most arches.
The only difference that I can think of on Itanium processor is the memory operation, you either load/store 4 or 8 bytes. Once the data is in the CPU register, it doesn't make any difference whether it is operating on 32bit or entire 64 bit. I don't know about others RISC arch though whether it is more efficient with native register size.
- Ken
- 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/
| |