All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Joe Perches <joe@perches.com>
Cc: mingo@redhat.com, hpa@zytor.com, linux-kernel@vger.kernel.org,
	tglx@linutronix.de, mingo@elte.hu,
	linux-tip-commits@vger.kernel.org
Subject: Re: [tip:core/rcu] rcu: Remove inline from forward-referenced functions
Date: Tue, 10 Nov 2009 21:41:38 -0800	[thread overview]
Message-ID: <20091111054138.GA19777@linux.vnet.ibm.com> (raw)
In-Reply-To: <20091111045013.GG8424@linux.vnet.ibm.com>

On Tue, Nov 10, 2009 at 08:50:13PM -0800, Paul E. McKenney wrote:
> On Tue, Nov 10, 2009 at 07:28:28PM -0800, Joe Perches wrote:
> > On Tue, 2009-11-10 at 17:42 -0800, Paul E. McKenney wrote:
> > > On Tue, Nov 10, 2009 at 05:03:41PM -0800, Joe Perches wrote:
> > > > So maybe rename rcutree_plugin.h to rcutree_plugin.c and
> > > > #include "rcutree_plugin.c" in rcutree.c instead.
> > > Hmmm...
> > 
> > Perhaps something like this:
> 
> While I do very much appreciate your time and attention to this...
> 
> My problem with this sort of thing is that when I tried it, it proved
> fragile.  Small changes required lots of rework of forward declarations.
> Putting it at the end makes it work very nicely -- the list of forward
> declarations doubles as documentation for the plugins, and the contents
> of kernel/rcutree_plugin.h (or .c or whatever, either way I end up
> violation about the same number of coding guidelines) is independent of
> rearrangements of kernel/rcutree.c.
> 
> The reason that I would really like to keep rcu_bootup_announce() as
> a function is that it makes it trivial to collect RCU-flavor-dependent
> boot-time information, if needed for some debugging effort.  If I pull
> the string out, this sort of thing becomes much more painful.

And, as noted in our offline conversation, you are absolutely right
that I need to add __init to both definitions of rcu_bootup_announce(),
which I will do, with your Suggested-by.

Fair enough?

							Thanx, Paul

> > cheers, Joe
> > 
> > rcu: rename rcutree_plugin.h to .c and use
> > 
> > diff --git a/kernel/rcutree.c b/kernel/rcutree.c
> > index d802419..737dc72 100644
> > --- a/kernel/rcutree.c
> > +++ b/kernel/rcutree.c
> > @@ -1783,6 +1783,8 @@ do { \
> >  	} \
> >  } while (0)
> > 
> > +#include "rcutree_plugin.c"
> > +
> >  void __init __rcu_init(void)
> >  {
> >  	rcu_bootup_announce();
> > @@ -1795,4 +1797,3 @@ void __init __rcu_init(void)
> >  	open_softirq(RCU_SOFTIRQ, rcu_process_callbacks);
> >  }
> > 
> > -#include "rcutree_plugin.h"
> > diff --git a/kernel/rcutree.h b/kernel/rcutree.h
> > index 17a28a0..ed11d16 100644
> > --- a/kernel/rcutree.h
> > +++ b/kernel/rcutree.h
> > @@ -300,8 +300,7 @@ DECLARE_PER_CPU(struct rcu_data, rcu_preempt_data);
> > 
> >  #else /* #ifdef RCU_TREE_NONCORE */
> > 
> > -/* Forward declarations for rcutree_plugin.h */
> > -static void rcu_bootup_announce(void);
> > +/* Forward declarations for rcutree_plugin.c */
> >  long rcu_batches_completed(void);
> >  static void rcu_preempt_note_context_switch(int cpu);
> >  static int rcu_preempted_readers(struct rcu_node *rnp);
> > diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.c
> > similarity index 99%
> > rename from kernel/rcutree_plugin.h
> > rename to kernel/rcutree_plugin.c
> > index 52075da..5ca2d26 100644
> > --- a/kernel/rcutree_plugin.h
> > +++ b/kernel/rcutree_plugin.c
> > @@ -33,7 +33,7 @@ DEFINE_PER_CPU(struct rcu_data, rcu_preempt_data);
> >  /*
> >   * Tell them what RCU they are running.
> >   */
> > -static void rcu_bootup_announce(void)
> > +static void __init rcu_bootup_announce(void)
> >  {
> >  	printk(KERN_INFO
> >  	       "Experimental preemptable hierarchical RCU implementation.\n");
> > @@ -481,7 +481,7 @@ void exit_rcu(void)
> >  /*
> >   * Tell them what RCU they are running.
> >   */
> > -static void rcu_bootup_announce(void)
> > +static void __init rcu_bootup_announce(void)
> >  {
> >  	printk(KERN_INFO "Hierarchical RCU implementation.\n");
> >  }
> > 
> > 

  reply	other threads:[~2009-11-11  5:41 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-10 21:36 [PATCH tip/core/rcu 0/4] rcu inline, expedited, ->completed cleanups Paul E. McKenney
2009-11-10 21:37 ` [PATCH tip/core/rcu 1/4] rcu: remove inline from forward-referenced functions Paul E. McKenney
2009-11-10 22:27   ` [tip:core/rcu] rcu: Remove " tip-bot for Paul E. McKenney
2009-11-10 22:38     ` Joe Perches
2009-11-10 22:59       ` Paul E. McKenney
2009-11-10 23:06         ` Joe Perches
2009-11-10 23:41           ` Paul E. McKenney
2009-11-11  1:03             ` Joe Perches
2009-11-11  1:42               ` Paul E. McKenney
2009-11-11  3:28                 ` Joe Perches
2009-11-11  4:50                   ` Paul E. McKenney
2009-11-11  5:41                     ` Paul E. McKenney [this message]
2009-11-11  7:02                       ` Ingo Molnar
2009-11-11 19:47                         ` Paul E. McKenney
2009-11-10 23:03   ` [PATCH tip/core/rcu 1/4] rcu: remove " Josh Triplett
2009-11-10 21:37 ` [PATCH tip/core/rcu 2/4] rcu: enable synchronize_sched_expedited() fastpath Paul E. McKenney
2009-11-10 22:27   ` [tip:core/rcu] rcu: Enable " tip-bot for Paul E. McKenney
2009-11-10 21:37 ` [PATCH tip/core/rcu 3/4] rcu: rename dynticks_completed to completed_fqs Paul E. McKenney
2009-11-10 22:28   ` [tip:core/rcu] rcu: Rename " tip-bot for Paul E. McKenney
2009-11-10 21:37 ` [PATCH tip/core/rcu 4/4] rcu: simplify association of quiescent states with grace periods Paul E. McKenney
2009-11-10 22:28   ` [tip:core/rcu] rcu: Simplify " tip-bot for Paul E. McKenney

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=20091111054138.GA19777@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=hpa@zytor.com \
    --cc=joe@perches.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    /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.