2005-11-18 03:33:44

by Adrian Bunk

[permalink] [raw]
Subject: [2.6 patch] drivers/net/wireless/orinoco.h: "extern inline" -> "static inline"

"extern inline" doesn't make much sense.


Signed-off-by: Adrian Bunk <[email protected]>

---

drivers/net/wireless/orinoco.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--- linux-2.6.15-rc1-mm1-full/drivers/net/wireless/orinoco.h.old 2005-11-18 02:38:43.000000000 +0100
+++ linux-2.6.15-rc1-mm1-full/drivers/net/wireless/orinoco.h 2005-11-18 02:38:47.000000000 +0100
@@ -155,7 +155,7 @@
* SPARC, due to its weird semantics for save/restore flags. extern
* inline should prevent the kernel from linking or module from
* loading if they are not inlined. */
-extern inline int orinoco_lock(struct orinoco_private *priv,
+static inline int orinoco_lock(struct orinoco_private *priv,
unsigned long *flags)
{
spin_lock_irqsave(&priv->lock, *flags);
@@ -168,7 +168,7 @@
return 0;
}

-extern inline void orinoco_unlock(struct orinoco_private *priv,
+static inline void orinoco_unlock(struct orinoco_private *priv,
unsigned long *flags)
{
spin_unlock_irqrestore(&priv->lock, *flags);


2005-11-18 03:52:51

by David Gibson

[permalink] [raw]
Subject: Re: [Orinoco-devel] [2.6 patch] drivers/net/wireless/orinoco.h: "extern inline" -> "static inline"

On Fri, Nov 18, 2005 at 04:33:29AM +0100, Adrian Bunk wrote:
> "extern inline" doesn't make much sense.

Yes it does. "extern inline" tells gcc not to fall back to out of
line version if it can't inline the function. These functions *must*
by inlined, or they'll break horribly on Sparc, at least.

> --- linux-2.6.15-rc1-mm1-full/drivers/net/wireless/orinoco.h.old 2005-11-18 02:38:43.000000000 +0100
> +++ linux-2.6.15-rc1-mm1-full/drivers/net/wireless/orinoco.h 2005-11-18 02:38:47.000000000 +0100
> @@ -155,7 +155,7 @@
> * SPARC, due to its weird semantics for save/restore flags. extern
> * inline should prevent the kernel from linking or module from
> * loading if they are not inlined. */
> -extern inline int orinoco_lock(struct orinoco_private *priv,
> +static inline int orinoco_lock(struct orinoco_private *priv,
> unsigned long *flags)
> {
> spin_lock_irqsave(&priv->lock, *flags);
> @@ -168,7 +168,7 @@
> return 0;
> }
>
> -extern inline void orinoco_unlock(struct orinoco_private *priv,
> +static inline void orinoco_unlock(struct orinoco_private *priv,
> unsigned long *flags)
> {
> spin_unlock_irqrestore(&priv->lock, *flags);
>

--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson

2005-11-18 04:00:13

by Adrian Bunk

[permalink] [raw]
Subject: Re: [Orinoco-devel] [2.6 patch] drivers/net/wireless/orinoco.h: "extern inline" -> "static inline"

On Fri, Nov 18, 2005 at 02:52:36PM +1100, David Gibson wrote:
> On Fri, Nov 18, 2005 at 04:33:29AM +0100, Adrian Bunk wrote:
> > "extern inline" doesn't make much sense.
>
> Yes it does. "extern inline" tells gcc not to fall back to out of
> line version if it can't inline the function. These functions *must*
> by inlined, or they'll break horribly on Sparc, at least.
>...

For any non-ancient gcc and !alpha, we are already telling gcc via
__attribute__((always_inline)) that it should abort compilation if it
can't inline the function.

The problem is that "extern inline" gives warnings with
-Wmissing-prototypes, and I want to add this flag to the CFLAGS since it
helps us to avoid a class of nasty runtime errors.

> David Gibson

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed