• A
    PCI: make pci_register_driver() a macro · bba81165
    Andrew Morton 提交于
    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: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
    bba81165
pci.h 36.7 KB