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: Pranith Kumar <pranith@gatech.edu>, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 1/1] kernel/rcu/tree.c: remove duplicate extern definition
Date: Mon, 14 Apr 2014 10:17:31 -0700	[thread overview]
Message-ID: <20140414171731.GH4496@linux.vnet.ibm.com> (raw)
In-Reply-To: <1397494407.2962.2.camel@joe-AO722>

On Mon, Apr 14, 2014 at 09:53:27AM -0700, Joe Perches wrote:
> On Mon, 2014-04-14 at 09:32 -0700, Paul E. McKenney wrote:
> > On Mon, Apr 14, 2014 at 12:19:31PM -0400, Pranith Kumar wrote:
> > > Hi Paul,
> > > 
> > > On Mon, Apr 14, 2014 at 12:07 PM, Paul E. McKenney
> > > <paulmck@linux.vnet.ibm.com> wrote:
> > > > On Sun, Apr 13, 2014 at 05:53:53PM -0400, Pranith Kumar wrote:
> > > >> remove duplicate definition of extern resched_cpu
> > > >>
> > > >> Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
> > > >
> > > > Hello, Pranith,
> > > >
> > > > When I apply this patch I get the following:
> > > >
> > > > /home/paulmck/public_git/linux-rcu/kernel/rcu/tree.c: In function ‘rcu_implicit_dynticks_qs’:
> > > > /home/paulmck/public_git/linux-rcu/kernel/rcu/tree.c:895:3: error: implicit declaration of function ‘resched_cpu’ [-Werror=implicit-function-declaration]
> > > > /home/paulmck/public_git/linux-rcu/kernel/rcu/tree.c: At top level:
> > > > /home/paulmck/public_git/linux-rcu/kernel/rcu/tree.c:1009:13: warning: conflicting types for ‘resched_cpu’ [enabled by default]
> > > > /home/paulmck/public_git/linux-rcu/kernel/rcu/tree.c:895:3: note: previous implicit declaration of ‘resched_cpu’ was here
> > > >
> > > > This failed in under number of different Kconfig setups, the .config file
> > > > for one of them is attached.
> > > >
> > > > So this declaration really is needed.  Just out of curiosity, what led
> > > > you to believe that it could be removed?
> > > >
> > > 
> > > That is strange. The patch removes a duplicate declaration of
> > > resched_cpu (on lines 768, 954) of the file kernel/rcu/tree.c of the
> > > latest git.
> > > 
> > > The patch compiles fine here with the latest tip of the git tree.
> > > 
> > >   CC      kernel/rcu/tree.o
> > > 
> > > Can you please check if your tree.c has two declarations for resched_cpu?
> > 
> > Ah, your patch didn't apply, so I hand-applied it, and removed the first
> > declaration rather than the second one.  Trying it again.
> 
> Perhaps this might be better than using the extern.
> 
> This also would allow the resched_cpu call to become
> static inline as it's very small.
> 
> ---
>  kernel/rcu/tree.c | 19 +++++++------------
>  1 file changed, 7 insertions(+), 12 deletions(-)
> 
> diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
> index 0c47e30..7f2c8c2 100644
> --- a/kernel/rcu/tree.c
> +++ b/kernel/rcu/tree.c
> @@ -60,6 +60,13 @@
>  #include "tree.h"
>  #include "rcu.h"
> 
> +/*
> + * This include of sched.h (for resched_cpu) really isn't for public
> + * consumption, but RCU is special in that context switches can allow
> + * the state machine to make progress.
> + */
> +#include "../sched/sched.h"

This sort of thing hasn't been well-received recently.  Plus the call
to resched_cpu() is very infrequent, so hardly worth the optimization.

							Thanx, Paul

> +
>  MODULE_ALIAS("rcutree");
>  #ifdef MODULE_PARAM_PREFIX
>  #undef MODULE_PARAM_PREFIX
> @@ -762,12 +769,6 @@ static int dyntick_save_progress_counter(struct rcu_data *rdp,
>  }
> 
>  /*
> - * This function really isn't for public consumption, but RCU is special in
> - * that context switches can allow the state machine to make progress.
> - */
> -extern void resched_cpu(int cpu);
> -
> -/*
>   * Return true if the specified CPU has passed through a quiescent
>   * state by virtue of being in or having passed through an dynticks
>   * idle state since the last call to dyntick_save_progress_counter()
> @@ -947,12 +948,6 @@ static void print_other_cpu_stall(struct rcu_state *rsp)
>  	force_quiescent_state(rsp);  /* Kick them all. */
>  }
> 
> -/*
> - * This function really isn't for public consumption, but RCU is special in
> - * that context switches can allow the state machine to make progress.
> - */
> -extern void resched_cpu(int cpu);
> -
>  static void print_cpu_stall(struct rcu_state *rsp)
>  {
>  	int cpu;
> 
> 


  reply	other threads:[~2014-04-14 17:17 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CAJhHMCBVQTpDecjd5sVhCWJk++K_Rne0DfHRoF7aSd7SRYp1WA@mail.gmail.com>
2014-04-14 16:07 ` [PATCH 1/1] kernel/rcu/tree.c: remove duplicate extern definition Paul E. McKenney
2014-04-14 16:19   ` Pranith Kumar
2014-04-14 16:27     ` Pranith Kumar
2014-04-14 17:31       ` Paul E. McKenney
2014-04-14 16:32     ` Paul E. McKenney
2014-04-14 16:53       ` Joe Perches
2014-04-14 17:17         ` Paul E. McKenney [this message]
     [not found] <CAJhHMCCE0QHvzqrdY-w8bB8ZK=JRN02V29XwaFYRXmu=9RhG9Q@mail.gmail.com>
2014-04-14  1:39 ` Pranith Kumar
2014-04-14  2:50   ` Joe Perches
2014-04-14  3:03     ` Pranith Kumar
2014-04-14  3:18       ` Joe Perches
2014-04-14  3:31         ` Pranith Kumar

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=20140414171731.GH4496@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=joe@perches.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pranith@gatech.edu \
    /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.