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