PCI: make pci_register_driver() a macro
alpha: CC [M] drivers/usb/gadget/u_ether.o In file included from include/asm/dma-mapping.h:7, from include/linux/dma-mapping.h:52, from include/linux/dmaengine.h:29, from include/linux/skbuff.h:29, from include/linux/if_ether.h:114, from include/linux/etherdevice.h:27, from drivers/usb/gadget/u_ether.c:29: include/linux/pci.h: In function 'pci_register_driver': include/linux/pci.h:673: error: 'KBUILD_MODNAME' undeclared (first use in this function) include/linux/pci.h:673: error: (Each undeclared identifier is reported only once include/linux/pci.h:673: error: for each function it appears in.) Sam says: The problem is that u_ether.o is used by two modules so when we build it KBUILD_MODNAME is not defined because kbuild does not know what value to use. And in pci.h we have the following inline: static inline int __must_check pci_register_driver(struct pci_driver *driver) { return __pci_register_driver(driver, THIS_MODULE, KBUILD_MODNAME); } And alpha uses dma-mapping.h to nullify a number of functions that seem to require something from pci.h. Making it a macro fixes this particular problem. However, the underlying issue of a file using KBUILD_MODNAME and being shared between multiple modules is *not* addressed. I guess the answer there is "don't do that". Cc: Sam Ravnborg <sam@ravnborg.org> Cc: Greg KH <greg@kroah.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
This commit is contained in:
parent
9d82d8eaec
commit
bba8116586
|
@ -680,10 +680,12 @@ void pci_enable_bridges(struct pci_bus *bus);
|
||||||
/* Proper probing supporting hot-pluggable devices */
|
/* Proper probing supporting hot-pluggable devices */
|
||||||
int __must_check __pci_register_driver(struct pci_driver *, struct module *,
|
int __must_check __pci_register_driver(struct pci_driver *, struct module *,
|
||||||
const char *mod_name);
|
const char *mod_name);
|
||||||
static inline int __must_check pci_register_driver(struct pci_driver *driver)
|
|
||||||
{
|
/*
|
||||||
return __pci_register_driver(driver, THIS_MODULE, KBUILD_MODNAME);
|
* pci_register_driver must be a macro so that KBUILD_MODNAME can be expanded
|
||||||
}
|
*/
|
||||||
|
#define pci_register_driver(driver) \
|
||||||
|
__pci_register_driver(driver, THIS_MODULE, KBUILD_MODNAME)
|
||||||
|
|
||||||
void pci_unregister_driver(struct pci_driver *dev);
|
void pci_unregister_driver(struct pci_driver *dev);
|
||||||
void pci_remove_behind_bridge(struct pci_dev *dev);
|
void pci_remove_behind_bridge(struct pci_dev *dev);
|
||||||
|
|
Loading…
Reference in New Issue