On Tue, Feb 21, 2006 at 09:24:23PM +0100, Carlos Mart?n wrote:
> > acx-common-y                += wlan.o conv.o ioctl.o common.o
> > acx-pci-y           += pci.o
> > acx-usb-y           += usb.o
> > 
> > obj-$(CONFIG_ACX_PCI)       += acx-common.o acx-pci.o
> > obj-$(CONFIG_ACX_USB)       += acx-common.o acx-usb.o
> 
> This is how we had it before, which leads to having a lot of the same code on 
> both modules. The unified driver is not much larger so it was made this way, 
> and that's where all the problem comes from.
> Wouldn't this lead to duplicated function definitions at link time if both 
> are 
> compiled-in? From your module split above I understood you wanted acx-common 
> to be another module, but here I see it goes into the modules.
> 

No.  The above makefile fragment builds three modules: acx-common.o,
acx-pci.o and acx-usb.o as mentioned above.  The magic here is that with
that makefile fragment is that the kbuild systems builds acx-common.o if
either CONFIG_ACX_PCI or CONFIG_ACX_USB is set, and even makes sure to
do the right thing if either is builtin.  There is not code duplication
at all.

> > ---- snip ----
> > 
> >  - kill the IS_PCI/IS_USB macros and add a acx_operations structure that
> >    handles the different hardware without branches all over and allows
> >    the hw-specific code to be in separate modules.
> 
> There aren't that many IS_{PCI,USB} uses and most if not all are justified 
> (extra step for one case). It might be a good idea to do that for the 
> IS_ACX{100,111} macros instead of calling the generic function which then 
> calls the chip-specific one.

The important bit is that you need the pointers with the above module
spit, because you can't call usb- or pci-specific routines from acx-common.ko
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to