Re: [patch] u64 casts

Albert Cahalan
2004-02-28T00:37:05Z

On Fri, 2004-02-27 at 19:18, David Mosberger wrote:
> >>>>> On 27 Feb 2004 15:58:42 -0500, Albert Cahalan <albert@users.sourceforge.net> said:
>
> Albert> Casts are considered harmful, because they bypass
> Albert> type checking, but how do you print a u64 value?
> Albert> You cast it to "unsigned long long" like this:
>
> Albert> printk("%llu\n", (unsigned long long)foo);
>
> Albert> Well, this is silly and ugly. As x86-64 has shown,
> Albert> even a 64-bit port can use "long long" for 64-bit
> Albert> values. This patch changes all other 64-bit ports.
> Albert> It now becomes possible to avoid adding new casts
> Albert> all over the place; existing ones may be removed
> Albert> if so desired.
>
> Did you verify that none of the kernel header files that are still
> being used by glibc contain declarations based on __u64 or __s64? If
> not, your patch breaks user-level code.

Supposing that this is the case, you may get warnings.
Well, good, maybe somebody will fix glibc. The data
types are obviously the same size, so no data-corrupting
errors will result.

Note that x86-64, a 64-bit port using glibc, is just
fine with "long long" already.

Also note that /usr/include/asm is a modified copy of
kernel headers. It won't be suddenly changing as a
result of the patch, even after a kernel upgrade.
(the symlink hasn't been OK since libc5 days)