From: "Jérôme Pouiller" <jezz@sysmic.org>
To: Grant Likely <grant.likely@secretlab.ca>
Cc: netdev <netdev@vger.kernel.org>,
linuxppc <linuxppc-dev@lists.ozlabs.org>,
Andy Fleming <afleming@freescale.com>,
"David S. Miller" <davem@davemloft.net>
Subject: Nested function in drivers/of/of_mdio.c
Date: Wed, 7 Oct 2009 17:15:57 +0200 [thread overview]
Message-ID: <200910071715.57249.jezz@sysmic.org> (raw)
Dear,
I have a problem with commit 8bc487d150b939e69830c39322df4ee486efe381=20
in file drivers/of/of_mdio.c in function of_phy_find_device.
As you see, this function define match() as a nested function. My=20
compiler (powerpc-e500-linux-gnu-gcc-3.4.1) raise an error during link=20
due to this nested definition:
drivers/built-in.o(.text+0x5e2a4): In function `of_phy_find_device': /hom=
e/jezz/linux-next/drivers/of/of_mdio.c:107:=20
undefined reference to `__trampoline_setup'
I am sure I could solve problem by rebuilding my toolchain.=20
Nevertheless, I think nested function definition is not perfectly=20
supported by all compilers. Also, I suggest to place function match()=20
outside of scope of of_phy_find_device as in following patch.
diff --git a/drivers/of/of_mdio.c b/drivers/of/of_mdio.c
index bacaa53..c7b2e26 100644
=2D-- a/drivers/of/of_mdio.c
+++ b/drivers/of/of_mdio.c
@@ -97,6 +97,10 @@ int of_mdiobus_register(struct mii_bus *mdio, struct dev=
ice_node *np)
}
EXPORT_SYMBOL(of_mdiobus_register);
+static int match(struct device *dev, void *phy_np)
+{
+ return dev_archdata_get_node(&dev->archdata) =3D=3D phy_np;
+}
/**
* of_phy_find_device - Give a PHY node, find the phy_device
* @phy_np: Pointer to the phy's device tree node
@@ -106,11 +110,6 @@ EXPORT_SYMBOL(of_mdiobus_register);
struct phy_device *of_phy_find_device(struct device_node *phy_np)
{
struct device *d;
=2D int match(struct device *dev, void *phy_np)
=2D {
=2D return dev_archdata_get_node(&dev->archdata) =3D=3D phy_n=
p;
=2D }
=2D
if (!phy_np)
return NULL;
What do you think about it?
Best regards,
=2D-=20
J=E9r=F4me Pouiller (jezz AT sysmic DOT org)
WARNING: multiple messages have this Message-ID (diff)
From: "Jérôme Pouiller" <jezz@sysmic.org>
To: Grant Likely <grant.likely@secretlab.ca>
Cc: netdev <netdev@vger.kernel.org>,
linuxppc <linuxppc-dev@lists.ozlabs.org>,
Andy Fleming <afleming@freescale.com>,
"David S. Miller" <davem@davemloft.net>
Subject: Nested function in drivers/of/of_mdio.c
Date: Wed, 7 Oct 2009 17:15:57 +0200 [thread overview]
Message-ID: <200910071715.57249.jezz@sysmic.org> (raw)
Dear,
I have a problem with commit 8bc487d150b939e69830c39322df4ee486efe381
in file drivers/of/of_mdio.c in function of_phy_find_device.
As you see, this function define match() as a nested function. My
compiler (powerpc-e500-linux-gnu-gcc-3.4.1) raise an error during link
due to this nested definition:
drivers/built-in.o(.text+0x5e2a4): In function `of_phy_find_device': /home/jezz/linux-next/drivers/of/of_mdio.c:107:
undefined reference to `__trampoline_setup'
I am sure I could solve problem by rebuilding my toolchain.
Nevertheless, I think nested function definition is not perfectly
supported by all compilers. Also, I suggest to place function match()
outside of scope of of_phy_find_device as in following patch.
diff --git a/drivers/of/of_mdio.c b/drivers/of/of_mdio.c
index bacaa53..c7b2e26 100644
--- a/drivers/of/of_mdio.c
+++ b/drivers/of/of_mdio.c
@@ -97,6 +97,10 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
}
EXPORT_SYMBOL(of_mdiobus_register);
+static int match(struct device *dev, void *phy_np)
+{
+ return dev_archdata_get_node(&dev->archdata) == phy_np;
+}
/**
* of_phy_find_device - Give a PHY node, find the phy_device
* @phy_np: Pointer to the phy's device tree node
@@ -106,11 +110,6 @@ EXPORT_SYMBOL(of_mdiobus_register);
struct phy_device *of_phy_find_device(struct device_node *phy_np)
{
struct device *d;
- int match(struct device *dev, void *phy_np)
- {
- return dev_archdata_get_node(&dev->archdata) == phy_np;
- }
-
if (!phy_np)
return NULL;
What do you think about it?
Best regards,
--
Jérôme Pouiller (jezz AT sysmic DOT org)
next reply other threads:[~2009-10-07 15:21 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-07 15:15 Jérôme Pouiller [this message]
2009-10-07 15:15 ` Nested function in drivers/of/of_mdio.c Jérôme Pouiller
2009-10-07 16:11 ` Grant Likely
2009-10-07 16:11 ` Grant Likely
2009-10-07 16:23 ` vb
2009-10-07 16:23 ` vb
2009-10-08 8:45 ` Jérôme Pouiller
2009-10-08 8:45 ` Jérôme Pouiller
2009-10-08 11:14 ` Gabriel Paubert
2009-10-08 8:34 ` [PATCH] Remove nested function Jérôme Pouiller
2009-10-08 8:34 ` Jérôme Pouiller
2009-10-08 9:10 ` David Miller
2009-10-08 9:10 ` David Miller
[not found] <200910071629.15804.jezz@sysmic.org>
2009-10-07 14:55 ` Nested function in drivers/of/of_mdio.c Grant Likely
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=200910071715.57249.jezz@sysmic.org \
--to=jezz@sysmic.org \
--cc=afleming@freescale.com \
--cc=davem@davemloft.net \
--cc=grant.likely@secretlab.ca \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=netdev@vger.kernel.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.