From: Russell King <rmk+lkml@arm.linux.org.uk>
To: Christoph Lameter <clameter@sgi.com>
Cc: "Luck, Tony" <tony.luck@intel.com>,
David Mosberger-Tang <David.Mosberger@acm.org>,
Nick Piggin <nickpiggin@yahoo.com.au>,
Zoltan Menyhart <Zoltan.Menyhart@bull.net>,
"Boehm, Hans" <hans.boehm@hp.com>,
"Grundler, Grant G" <grant.grundler@hp.com>,
"Chen, Kenneth W" <kenneth.w.chen@intel.com>,
akpm@osdl.org, linux-kernel@vger.kernel.org,
linux-ia64@vger.kernel.org
Subject: Re: Synchronizing Bit operations V2
Date: Sun, 02 Apr 2006 07:59:59 +0000 [thread overview]
Message-ID: <20060402075959.GB19149@flint.arm.linux.org.uk> (raw)
In-Reply-To: <Pine.LNX.4.64.0603301657470.2068@schroedinger.engr.sgi.com>
On Thu, Mar 30, 2006 at 04:58:25PM -0800, Christoph Lameter wrote:
> On Thu, 30 Mar 2006, Luck, Tony wrote:
>
> > > Also some higher level functions may want to have the mode passed to them
> > > as parameters. See f.e. include/linux/buffer_head.h. Without the
> > > parameters you will have to maintain farms of definitions for all cases.
> >
> > But if any part of the call chain from those higher level functions
> > down to these low level functions is not inline, then the compiler
> > won't be able to collapse out the "switch (mode)" ... so we'd end up
> > with a ton of extra object code.
>
> Correct. But such bitops are typically defined to be inline.
That's doesn't seem to be the point that Tony was making. To illustrate
it let's add a practical example:
static inline void clear_bit_mode(int bit, unsigned long *ptr, int mode)
{
case (mode) {
...
}
}
void foo(blah blah, int mode)
{
... complex function ...
clear_bit_mode(bit, ptr, mode);
...
}
void bar(blah blah)
{
foo(blah, MODE_BARRIER);
}
In this case, the compiler can not optimise the unnecessary code from
the clear_bit_mode because the mode argument quite definitely is not a
constant known at compile time. Only if 'foo' was a static inline
would it be known.
--
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-04-02 7:59 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-30 21:02 Bit operations with the ability to specify a synchronization mode Christoph Lameter
2006-03-31 0:18 ` Synchronizing Bit operations V2 Christoph Lameter
2006-03-31 0:39 ` Chen, Kenneth W
2006-03-31 0:42 ` Christoph Lameter
2006-03-31 0:45 ` Christoph Lameter
2006-03-31 0:42 ` David Mosberger-Tang
2006-03-31 0:49 ` Christoph Lameter
2006-03-31 6:10 ` Chris Wright
2006-03-31 0:44 ` Nick Piggin
2006-03-31 3:28 ` Christoph Lameter
2006-03-31 4:12 ` Nick Piggin
2006-03-31 17:43 ` Christoph Lameter
2006-04-01 2:56 ` Nick Piggin
2006-03-31 0:50 ` Chen, Kenneth W
2006-03-31 0:51 ` Christoph Lameter
2006-03-31 0:53 ` Chen, Kenneth W
2006-03-31 0:55 ` Christoph Lameter
2006-03-31 0:56 ` Luck, Tony
2006-03-31 0:58 ` Christoph Lameter
2006-04-02 7:59 ` Russell King [this message]
2006-03-31 0:59 ` Chen, Kenneth W
2006-03-31 1:09 ` Christoph Lameter
2006-03-31 1:04 ` Chen, Kenneth W
2006-03-31 1:13 ` Christoph Lameter
2006-03-31 1:13 ` Chen, Kenneth W
2006-03-31 1:29 ` Chen, Kenneth W
2006-03-31 1:37 ` Christoph Lameter
2006-03-31 1:33 ` linux
2006-03-31 1:40 ` Christoph Lameter
2006-03-31 2:35 ` Chen, Kenneth W
2006-03-31 2:37 ` Christoph Lameter
2006-03-31 2:45 ` Chen, Kenneth W
2006-03-31 2:53 ` Nick Piggin
2006-03-31 3:01 ` Christoph Lameter
2006-03-31 2:51 ` Chen, Kenneth W
2006-03-31 2:55 ` Christoph Lameter
2006-03-31 3:02 ` Chen, Kenneth W
2006-03-31 3:08 ` Christoph Lameter
2006-03-31 3:10 ` Chen, Kenneth W
2006-03-31 3:12 ` Christoph Lameter
2006-03-31 3:11 ` Chen, Kenneth W
2006-03-31 3:14 ` Chen, Kenneth W
2006-03-31 3:20 ` Christoph Lameter
2006-03-31 3:17 ` Chen, Kenneth W
2006-03-31 3:23 ` Chen, Kenneth W
2006-03-31 3:37 ` Chen, Kenneth W
2006-03-31 6:15 ` Chen, Kenneth W
2006-03-31 7:34 ` Nick Piggin
2006-03-31 13:28 ` Andi Kleen
2006-03-31 16:22 ` Hans Boehm
2006-03-31 16:37 ` Andi Kleen
2006-03-31 17:46 ` Christoph Lameter
2006-03-31 17:45 ` Christoph Lameter
2006-03-31 17:48 ` Andi Kleen
2006-03-31 17:56 ` Christoph Lameter
2006-04-02 7:54 ` Russell King
2006-03-31 18:57 ` Chen, Kenneth W
2006-03-31 19:41 ` Chen, Kenneth W
2006-03-31 21:15 ` Christoph Lameter
2006-03-31 21:24 ` Chen, Kenneth W
2006-03-31 21:28 ` Christoph Lameter
2006-04-01 2:16 ` Nick Piggin
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=20060402075959.GB19149@flint.arm.linux.org.uk \
--to=rmk+lkml@arm.linux.org.uk \
--cc=David.Mosberger@acm.org \
--cc=Zoltan.Menyhart@bull.net \
--cc=akpm@osdl.org \
--cc=clameter@sgi.com \
--cc=grant.grundler@hp.com \
--cc=hans.boehm@hp.com \
--cc=kenneth.w.chen@intel.com \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nickpiggin@yahoo.com.au \
--cc=tony.luck@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox