From: Russell King <rmk+lkml@arm.linux.org.uk>
To: Matthew Wilcox <matthew@wil.cx>
Cc: Adrian Bunk <bunk@stusta.de>, David Howells <dhowells@redhat.com>,
torvalds@osdl.org, akpm@osdl.org, linux-kernel@vger.kernel.org,
linux-arch@vger.kernel.org
Subject: Re: [PATCH 4/6] Implement a general log2 facility in the kernel
Date: Wed, 13 Sep 2006 17:38:06 +0100 [thread overview]
Message-ID: <20060913163806.GA15563@flint.arm.linux.org.uk> (raw)
In-Reply-To: <20060913163136.GA2585@parisc-linux.org>
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@redhat.com>
> > >
> > > 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
next prev parent reply other threads:[~2006-09-13 16:38 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-13 13:02 [PATCH 1/6] FRV: Fix fls() to handle bit 31 being set correctly David Howells
2006-09-13 13:02 ` [PATCH 2/6] FRV: Implement fls64() David Howells
2006-09-13 13:02 ` [PATCH 3/6] FRV: Optimise ffs() David Howells
2006-09-13 13:03 ` [PATCH 4/6] Implement a general log2 facility in the kernel David Howells
2006-09-13 15:57 ` Luck, Tony
2006-09-13 16:50 ` David Howells
2006-09-13 16:17 ` Adrian Bunk
2006-09-13 16:31 ` Matthew Wilcox
2006-09-13 16:38 ` Russell King [this message]
2006-09-13 16:56 ` David Howells
2006-09-13 18:38 ` Geert Uytterhoeven
2006-09-13 18:45 ` Russell King
2006-09-13 19:09 ` Geert Uytterhoeven
2006-09-13 13:03 ` [PATCH 5/6] Alter get_order() so that it can make use of long_log2() on a constant David Howells
2006-09-13 13:03 ` [PATCH 6/6] Alter roundup_pow_of_two() " David Howells
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060913163806.GA15563@flint.arm.linux.org.uk \
--to=rmk+lkml@arm.linux.org.uk \
--cc=akpm@osdl.org \
--cc=bunk@stusta.de \
--cc=dhowells@redhat.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matthew@wil.cx \
--cc=torvalds@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.