Jaroslav Kysela wrote:
> On Sat, 8 Dec 2001, Jordan Breeding wrote:
>
>
>>would be nice because of it's __devexit_p() approach to the binutils
>>problem. __devexit_p() did solve my problems with the actual ALSA
>>
>
> This macro is not used anywhere in the Linux kernel tree.
>
Actually in linux-2.4.17-pre6 it is used, it is a new function provided
specifically to fix the problems people were having linking using the
new binutils. Here is the output of `grep -r -i -w -H "__devexit_p"
/usr/src/linux/*` which is a linux-2.4.17-pre6 tree with ALSA patched in
and also has drivers/sound/cards/card-emu10k1.c hacked to use
__devexit_p() so that the linking problem with it would go away:
/usr/src/linux/Documentation/pci.txt: __devexit_p(function_name). That will
generate the function
/usr/src/linux/drivers/net/tlan.c: remove: __devexit_p(tlan_remove_one),
/usr/src/linux/drivers/net/wan/farsync.c: remove:
__devexit_p(fst_remove_one),
/usr/src/linux/drivers/net/3c59x.c: remove: __devexit_p(vortex_remove_one),
/usr/src/linux/drivers/net/tokenring/olympic.c: remove:
__devexit_p(olympic_remove_one),
/usr/src/linux/drivers/net/tokenring/lanstreamer.c: remove:
__devexit_p(streamer_remove_one),
/usr/src/linux/drivers/net/defxx.c: remove: __devexit_p(dfx_remove_one),
/usr/src/linux/drivers/net/eepro100.c: remove:
__devexit_p(eepro100_remove_one),
/usr/src/linux/drivers/net/yellowfin.c: remove:
__devexit_p(yellowfin_remove_one),
/usr/src/linux/drivers/net/starfire.c: remove:
__devexit_p(starfire_remove_one),
/usr/src/linux/drivers/net/via-rhine.c: remove:
__devexit_p(via_rhine_remove_one),
/usr/src/linux/drivers/net/sis900.c: remove: __devexit_p(sis900_remove),
/usr/src/linux/drivers/net/arcnet/com20020-pci.c: remove:
__devexit_p(com20020pci_remove),
/usr/src/linux/drivers/net/epic100.c: remove: __devexit_p(epic_remove_one),
/usr/src/linux/drivers/net/ne2k-pci.c: remove:
__devexit_p(ne2k_pci_remove_one),
/usr/src/linux/drivers/net/dl2k.c: remove:__devexit_p(rio_remove1),
/usr/src/linux/drivers/net/8139too.c: remove:
__devexit_p(rtl8139_remove_one),
/usr/src/linux/drivers/net/irda/vlsi_ir.c: remove:
__devexit_p(vlsi_irda_remove),
/usr/src/linux/drivers/net/sungem.c: remove: __devexit_p(gem_remove_one),
/usr/src/linux/drivers/net/tulip/tulip_core.c: remove:
__devexit_p(tulip_remove_one),
/usr/src/linux/drivers/net/ioc3-eth.c: remove:
__devexit_p(ioc3_remove_one),
/usr/src/linux/drivers/net/pcmcia/xircom_tulip_cb.c: remove:
__devexit_p(xircom_remove_one),
/usr/src/linux/drivers/net/pcmcia/xircom_cb.c: remove:
__devexit_p(xircom_remove),
/usr/src/linux/drivers/net/fealnx.c: remove:
__devexit_p(fealnx_remove_one),
/usr/src/linux/drivers/net/natsemi.c: remove:
__devexit_p(natsemi_remove1),
/usr/src/linux/drivers/net/sundance.c: remove:
__devexit_p(sundance_remove1),
/usr/src/linux/drivers/net/winbond-840.c: remove:
__devexit_p(w840_remove1),
/usr/src/linux/drivers/net/pci-skeleton.c: remove:
__devexit_p(netdrv_remove_one),
/usr/src/linux/drivers/net/wireless/airo.c: remove:
__devexit_p(airo_pci_remove),
/usr/src/linux/drivers/net/wireless/orinoco_plx.c:
remove:__devexit_p(orinoco_plx_remove_one),
/usr/src/linux/drivers/net/8139cp.c: remove:
__devexit_p(cp_remove_one),
/usr/src/linux/drivers/net/ns83820.c: remove:
__devexit_p(ns83820_remove_one),
/usr/src/linux/drivers/block/cciss.c: remove:
__devexit_p(cciss_remove_one),
/usr/src/linux/drivers/char/serial.c: remove:
__devexit_p(serial_remove_one),
/usr/src/linux/drivers/char/joystick/pcigame.c: remove:
__devexit_p(pcigame_remove),
/usr/src/linux/drivers/char/joystick/cs461x.c: remove:
__devexit_p(cs461x_pci_remove),
/usr/src/linux/drivers/char/joystick/emu10k1-gp.c: remove:
__devexit_p(emu_remove),
/usr/src/linux/drivers/sound/oss/ymfpci.c: remove:
__devexit_p(ymf_remove_one),
/usr/src/linux/drivers/sound/oss/emu10k1/main.c: remove:
__devexit_p(emu10k1_remove),
/usr/src/linux/drivers/sound/oss/btaudio.c: remove:
__devexit_p(btaudio_remove),
/usr/src/linux/drivers/sound/cards/card-emu10k1.c: remove:
__devexit_p(snd_card_emu10k1_remove),
/usr/src/linux/drivers/isdn/hisax/st5481_init.c: disconnect:
__devexit_p(disconnect_st5481),
/usr/src/linux/drivers/isdn/tpam/tpam_main.c: remove:
__devexit_p(tpam_remove),
/usr/src/linux/drivers/video/imsttfb.c: remove:
__devexit_p(imsttfb_remove),
/usr/src/linux/drivers/video/cyber2000fb.c: remove:
__devexit_p(cyberpro_remove),
/usr/src/linux/drivers/video/riva/fbdev.c: remove:
__devexit_p(rivafb_remove_one),
/usr/src/linux/drivers/video/tdfxfb.c: remove:
__devexit_p(tdfxfb_remove),
/usr/src/linux/drivers/video/radeonfb.c: remove:
__devexit_p(radeonfb_pci_unregister),
/usr/src/linux/drivers/usb/usb-ohci.c: remove:
__devexit_p(ohci_pci_remove),
/usr/src/linux/drivers/usb/uhci.c: remove:
__devexit_p(uhci_pci_remove),
/usr/src/linux/drivers/usb/usb-uhci.c: remove:
__devexit_p(uhci_pci_remove),
/usr/src/linux/drivers/atm/eni.c: remove:
__devexit_p(eni_remove_one),
/usr/src/linux/drivers/atm/firestream.c: remove:
__devexit_p(firestream_remove_one),
/usr/src/linux/drivers/parport/parport_serial.c: remove:
__devexit_p(parport_serial_pci_remove),
/usr/src/linux/drivers/pcmcia/pci_socket.c: remove:
__devexit_p(cardbus_remove),
/usr/src/linux/drivers/ieee1394/ohci1394.c: remove:
__devexit_p(ohci1394_remove_one),
/usr/src/linux/drivers/media/radio/radio-maxiradio.c: remove:
__devexit_p(maxiradio_remove_one),
/usr/src/linux/drivers/media/radio/radio-gemtek-pci.c: remove:
__devexit_p(gemtek_pci_remove),
/usr/src/linux/drivers/media/video/bttv-driver.c: remove:
__devexit_p(bttv_remove),
/usr/src/linux/drivers/media/video/meye.c: remove:
__devexit_p(meye_remove),
/usr/src/linux/include/linux/init.h: __devexit functions must use
__devexit_p(function_name), the wrapper will
/usr/src/linux/include/linux/init.h:#define __devexit_p(x) x
/usr/src/linux/include/linux/init.h:#define __devexit_p(x) NULL
Anyway I think that should show that yes it is used in the kernel tree,
at least as of 2.4.17-pre{6,7}. Hope that helps.
>
> Try this patch:
>
> Index: seq_oss.c
> ===================================================================
> RCS file: /cvsroot/alsa/alsa-driver/kernel/seq/oss/seq_oss.c,v
> retrieving revision 1.36
> diff -u -r1.36 seq_oss.c
> --- seq_oss.c 2001/10/12 10:43:19 1.36
> +++ seq_oss.c 2001/12/09 09:35:52
> @@ -296,7 +296,7 @@
> return 0;
> }
>
> -static void __exit
> +static void
> unregister_proc(void)
> {
> #ifdef CONFIG_PROC_FS
Tried this patch and now I get the following when linking during `make
bzImage`:
make[2]: Leaving directory `/usr/src/linux/arch/i386/lib'
make[1]: Leaving directory `/usr/src/linux/arch/i386/lib'
ld -m elf_i386 -T /usr/src/linux/arch/i386/vmlinux.lds -e stext
arch/i386/kernel/head.o arch/i386/kernel/init_task.o init/main.o
init/version.o \
--start-group \
arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o
mm/mm.o fs/fs.o ipc/ipc.o \
drivers/acpi/acpi.o drivers/char/char.o drivers/block/block.o
drivers/misc/misc.o drivers/net/net.o drivers/media/media.o
drivers/char/agp/agp.o drivers/char/drm/drm.o drivers/ide/idedriver.o
drivers/scsi/scsidrv.o drivers/cdrom/driver.o
drivers/sound/sounddrivers.o drivers/pci/driver.o drivers/video/video.o
drivers/usb/usbdrv.o drivers/input/inputdrv.o drivers/i2c/i2c.o \
net/network.o \
/usr/src/linux/arch/i386/lib/lib.a /usr/src/linux/lib/lib.a
/usr/src/linux/arch/i386/lib/lib.a \
--end-group \
-o vmlinux
drivers/sound/sounddrivers.o(.data+0x3754): undefined reference to
`local symbols in discarded section .text.exit'
make: *** [vmlinux] Error 1
>
>
> Jaroslav
>
> -----
> Jaroslav Kysela <[EMAIL PROTECTED]>
> SuSE Linux http://www.suse.com
> ALSA Project http://www.alsa-project.org
>
>
>
Thanks for all of your help and any help you can continue to give me to
try and solve this problem. Sorry about this email being so long.
Jordan Breeding
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel