Re: [PATCH 4/6] Implement a general log2 facility in the kernel
- From: Russell King <rmk+lkml@xxxxxxxxxxxxxxxx>
- Date: Wed, 13 Sep 2006 17:38:06 +0100
On Wed, Sep 13, 2006 at 10:31:36AM -0600, Matthew Wilcox wrote:
On Wed, Sep 13, 2006 at 06:17:34PM +0200, Adrian Bunk wrote:
On Wed, Sep 13, 2006 at 02:03:00PM +0100, David Howells wrote:
From: David Howells <dhowells@xxxxxxxxxx>
This facility provides three entry points:
log2() Log base 2 of u32
...
Considering that several arch maintainers have vetoed my patch to revert
the -ffreestanding removal Andi sneaked in with his usual trick to hide
generic patches as "x86_64 patch", such a usage of a libc function name
with a signature different from the one defined in ISO/IEC 9899:1999 is
a namespace violation that mustn't happen.
log2 is only defined if math.h gets included. If we're including math.h
at any point in the kernel itself (excluding the bootloader and similar),
we're already screwed six ways from sunday.
Adrian's point is that gcc without -ffreestanding may decide to implement
log2() itself by issuing the appropriate floating point instructions
rather than using a function call into a library to do this operation.
Therefore, re-using "log2()" is about as bad as re-using the "strcmp()"
name to implement a function which copies strings.
And, sure enough, try throwing this at a compiler:
int log2(int foo)
{
return foo;
}
you get:
t.c:2: warning: conflicting types for built-in function 'log2'
but not if you use -ffreestanding.
Don't re-use C standard library identifiers (or use -ffreestanding.)
--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- References:
- [PATCH 1/6] FRV: Fix fls() to handle bit 31 being set correctly
- From: David Howells
- [PATCH 4/6] Implement a general log2 facility in the kernel
- From: David Howells
- Re: [PATCH 4/6] Implement a general log2 facility in the kernel
- From: Adrian Bunk
- Re: [PATCH 4/6] Implement a general log2 facility in the kernel
- From: Matthew Wilcox
- [PATCH 1/6] FRV: Fix fls() to handle bit 31 being set correctly
- Prev by Date: [11/12] driver core fixes: device_create_file() retval check in dmapool.c
- Next by Date: [04/12] driver core fixes: retval check in class_register()
- Previous by thread: Re: [PATCH 4/6] Implement a general log2 facility in the kernel
- Next by thread: Re: [PATCH 4/6] Implement a general log2 facility in the kernel
- Index(es):
Relevant Pages
|
|