[lkml]   [2005]   [Apr]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: Use of C99 int types

On Apr 3, 2005, at 2:30 PM, Dag Arne Osvik wrote:

> Stephen Rothwell wrote:
>> On Sun, 03 Apr 2005 13:55:39 +0200 Dag Arne Osvik <> wrote:
>>> I've been working on a new DES implementation for Linux, and ran into
>>> the problem of how to get access to C99 types like uint_fast32_t for
>>> internal (not interface) use. In my tests, key setup on Athlon 64
>>> slows
>>> down by 40% when using u32 instead of uint_fast32_t.
>> If you look in stdint.h you may find that uint_fast32_t is actually
>> 64 bits on Athlon 64 ... so does it help if you use u64?
> Yes, but wouldn't it be much better to avoid code like the following,
> which may also be wrong (in terms of speed)?
> #ifdef CONFIG_64BIT // or maybe CONFIG_X86_64?
> #define fast_u32 u64
> #else
> #define fast_u32 u32
> #endif

Isn't it better to use a general integer type, reflecting the cpu's
native register-size and let the compiler sort it out? Restrict all
uses of explicit width types to where it's *really* needed, that is, in
drivers, network-code, etc. I firmly oppose any definition of "#define
fast_u32 u64". This kind of definitions will only create needless

I wonder how much other code is suffering from this kind of overly
explicit typing. It's much easier to make assumptions about integer
size unwittingly than it is to avoid them. I used to assume (for
instance) that sizeof(int) == sizeof(long) == sizeof(void *) at one
point in my career. Fortunately, reality soon asserted itself again.


Renate Meijer.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-04-06 13:31    [W:0.102 / U:0.840 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site