From: Jon Schindler <jkschind@xxxxxxxxx> I apologize, there was an error in the last two versions I sent. I'm not sure what's happening, but I've recut and pasted the text. If that doesn't work this time, I may need to use a different mail client. As this is the first patch I have submitted, please let me know if there are any errors that I have made or tips that I can follow for next time. As part of the kernel janitor projected listed at http://kernelnewbies.org/KernelJanitors/Todo/ApiChanges I have made the following changes: -prototypes for init_module were replaced with static function definitions that are exported using module_init() -prototypes exported using cleanup_module(void) were replaced with a static internal function that is exported through module_exit(). The following files are affected: drivers/block/floppy.c drivers/block/ps2esdi.c drivers/char/drm/drm_drv.c drivers/char/ip2/ip2main.c drivers/ide/ide.c drivers/net/3c501.c drivers/net/3c505.c drivers/net/3c507.c drivers/net/3c515.c drivers/net/3c523.c drivers/net/3c527.c drivers/net/82596.c Signed-off-by: Jon Schindler <jkschind@xxxxxxxxx> --- diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 32c79a5..9a3d509 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -4528,14 +4528,15 @@ static void __init parse_floppy_cfg_string(char *cfg) } } -int __init init_module(void) +static int __init floppy_module_init(void) { if (floppy) parse_floppy_cfg_string(floppy); return floppy_init(); } +module_init(floppy_module_init); -void cleanup_module(void) +static void __exit floppy_module_exit(void) { int drive; @@ -4567,6 +4568,7 @@ void cleanup_module(void) wait_for_completion(&device_release); } +module_exit(floppy_module_exit); module_param(floppy, charp, 0); module_param(FLOPPY_IRQ, int, 0); diff --git a/drivers/block/ps2esdi.c b/drivers/block/ps2esdi.c index 3c796e2..edcd150 100644 --- a/drivers/block/ps2esdi.c +++ b/drivers/block/ps2esdi.c @@ -135,7 +135,7 @@ static struct block_device_operations ps2esdi_fops = static struct gendisk *ps2esdi_gendisk[2]; -/* initialization routine called by ll_rw_blk.c */ +/* initialization routine used when compiled into kernel */ static int __init ps2esdi_init(void) { @@ -180,7 +180,10 @@ module_param_array(head, int, NULL, 0); module_param_array(sect, int, NULL, 0); MODULE_LICENSE("GPL"); -int init_module(void) { +/* extra work needs to be done in addition to ps2esdi_init + * when compiled as a module */ +static int __init ps2esdi_init_module(void) +{ int drive; for(drive = 0; drive < MAX_HD; drive++) { @@ -198,9 +201,10 @@ int init_module(void) { } return ps2esdi_init(); } +module_init(ps2esdi_init_module); -void -cleanup_module(void) { +static void __exit ps2esdi_cleanup_module(void) +{ int i; if(ps2esdi_slot) { mca_mark_as_unused(ps2esdi_slot); @@ -216,6 +220,8 @@ cleanup_module(void) { put_disk(ps2esdi_gendisk[i]); } } +module_exit(ps2esdi_cleanup_module); + #endif /* MODULE */ /* handles boot time command line parameters */ diff --git a/drivers/char/ip2/ip2main.c b/drivers/char/ip2/ip2main.c index b1d6cad..048e7c8 100644 --- a/drivers/char/ip2/ip2main.c +++ b/drivers/char/ip2/ip2main.c @@ -354,14 +354,15 @@ have_requested_irq( char irq ) /* the driver initialisation function and returns what it returns. */ /******************************************************************************/ #ifdef MODULE -int -init_module(void) +static int __init +ip2_init_module(void) { #ifdef IP2DEBUG_INIT printk (KERN_DEBUG "Loading module ...\n" ); #endif return 0; } +module_init(ip2_init_module); #endif /* MODULE */ /******************************************************************************/ @@ -380,8 +381,8 @@ init_module(void) /* driver should be returned since it may be unloaded from memory. */ /******************************************************************************/ #ifdef MODULE -void -cleanup_module(void) +void __exit +ip2_cleanup_module(void) { int err; int i; @@ -451,6 +452,7 @@ cleanup_module(void) printk (KERN_DEBUG "IP2 Unloaded\n" ); #endif } +module_exit(ip2_cleanup_module); #endif /* MODULE */ static const struct tty_operations ip2_ops = { diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c index 477833f..cff8da2 100644 --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c @@ -1641,7 +1641,7 @@ static char *options = NULL; module_param(options, charp, 0); MODULE_LICENSE("GPL"); -static void __init parse_options (char *line) +static void __init parse_options(char *line) { char *next = line; @@ -1655,13 +1655,14 @@ static void __init parse_options (char *line) } } -int __init init_module (void) +static int __init ide_module_init(void) { parse_options(options); return ide_init(); } +module_init(ide_module_init); -void __exit cleanup_module (void) +static void __exit ide_module_exit(void) { int index; @@ -1672,6 +1673,7 @@ void __exit cleanup_module (void) bus_unregister(&ide_bus_type); } +module_exit(ide_module_exit); #else /* !MODULE */ diff --git a/drivers/net/3c501.c b/drivers/net/3c501.c index 7d25368..537b4e7 100644 --- a/drivers/net/3c501.c +++ b/drivers/net/3c501.c @@ -867,13 +867,14 @@ MODULE_PARM_DESC(irq, "EtherLink IRQ number"); * here also causes the module to be unloaded */ -int __init init_module(void) +static int __init tc501_module_init(void) { dev_3c501 = el1_probe(-1); if (IS_ERR(dev_3c501)) return PTR_ERR(dev_3c501); return 0; } +module_init(tc501_module_init); /** * cleanup_module: @@ -882,13 +883,14 @@ int __init init_module(void) * and then free up the resources we took when the card was found. */ -void __exit cleanup_module(void) +static void __exit tc501_module_exit(void) { struct net_device *dev = dev_3c501; unregister_netdev(dev); release_region(dev->base_addr, EL1_IO_EXTENT); free_netdev(dev); } +module_exit(tc501_module_exit); #endif /* MODULE */ diff --git a/drivers/net/3c505.c b/drivers/net/3c505.c index 9c65734..7eed97f 100644 --- a/drivers/net/3c505.c +++ b/drivers/net/3c505.c @@ -1615,7 +1615,7 @@ MODULE_PARM_DESC(io, "EtherLink Plus I/O base address(es)"); MODULE_PARM_DESC(irq, "EtherLink Plus IRQ number(s) (assigned)"); MODULE_PARM_DESC(dma, "EtherLink Plus DMA channel(s)"); -int __init init_module(void) +static int __init tc505_module_init(void) { int this_dev, found = 0; @@ -1651,8 +1651,9 @@ int __init init_module(void) return -ENODEV; return 0; } +module_init(tc505_module_init); -void __exit cleanup_module(void) +static void __exit tc505_module_exit(void) { int this_dev; @@ -1665,6 +1666,7 @@ void __exit cleanup_module(void) } } } +module_exit(tc505_module_exit); #endif /* MODULE */ MODULE_LICENSE("GPL"); diff --git a/drivers/net/3c507.c b/drivers/net/3c507.c index 030c147..07b6d7d 100644 --- a/drivers/net/3c507.c +++ b/drivers/net/3c507.c @@ -918,16 +918,16 @@ module_param(irq, int, 0); MODULE_PARM_DESC(io, "EtherLink16 I/O base address"); MODULE_PARM_DESC(irq, "(ignored)"); -int __init init_module(void) +static int __init tc507_module_init(void) { if (io == 0) printk("3c507: You should not use auto-probing with insmod!\n"); dev_3c507 = el16_probe(-1); return IS_ERR(dev_3c507) ? PTR_ERR(dev_3c507) : 0; } +module_init(tc507_module_init); -void __exit -cleanup_module(void) +static void __exit tc507_module_exit(void) { struct net_device *dev = dev_3c507; unregister_netdev(dev); @@ -936,6 +936,8 @@ cleanup_module(void) release_region(dev->base_addr, EL16_IO_EXTENT); free_netdev(dev); } +module_exit(tc507_module_exit); + #endif /* MODULE */ MODULE_LICENSE("GPL"); diff --git a/drivers/net/3c515.c b/drivers/net/3c515.c index 6ab84b6..107d1ff 100644 --- a/drivers/net/3c515.c +++ b/drivers/net/3c515.c @@ -415,7 +415,7 @@ MODULE_PARM_DESC(max_interrupt_work, "3c515 maximum events handled per interrupt /* we will need locking (and refcounting) if we ever use it for more */ static LIST_HEAD(root_corkscrew_dev); -int init_module(void) +static int __init tc515_module_init(void) { int found = 0; if (debug >= 0) @@ -426,6 +426,7 @@ int init_module(void) found++; return found ? 0 : -ENODEV; } +module_init(tc515_module_init); #else struct net_device *tc515_probe(int unit) @@ -1565,7 +1566,7 @@ static const struct ethtool_ops netdev_ethtool_ops = { #ifdef MODULE -void cleanup_module(void) +static void __exit tc515_module_exit(void) { while (!list_empty(&root_corkscrew_dev)) { struct net_device *dev; @@ -1579,6 +1580,8 @@ void cleanup_module(void) free_netdev(dev); } } +module_exit(tc515_module_exit); + #endif /* MODULE */ /* diff --git a/drivers/net/3c523.c b/drivers/net/3c523.c index 239fc42..cb4beba 100644 --- a/drivers/net/3c523.c +++ b/drivers/net/3c523.c @@ -1268,7 +1268,7 @@ MODULE_PARM_DESC(io, "EtherLink/MC I/O base address(es)"); MODULE_PARM_DESC(irq, "EtherLink/MC IRQ number(s)"); MODULE_LICENSE("GPL"); -int __init init_module(void) +static int __init tc523_module_init(void) { int this_dev,found = 0; @@ -1295,8 +1295,9 @@ int __init init_module(void) return -ENXIO; } else return 0; } +module_init(tc523_module_init); -void __exit cleanup_module(void) +static void __exit tc523_module_exit(void) { int this_dev; for (this_dev=0; this_dev<MAX_3C523_CARDS; this_dev++) { @@ -1308,5 +1309,6 @@ void __exit cleanup_module(void) } } } +module_exit(tc523_module_exit); #endif /* MODULE */ diff --git a/drivers/net/3c527.c b/drivers/net/3c527.c index b72b89d..4740a80 100644 --- a/drivers/net/3c527.c +++ b/drivers/net/3c527.c @@ -1631,23 +1631,24 @@ static const struct ethtool_ops netdev_ethtool_ops = { static struct net_device *this_device; /** - * init_module - entry point + * tc527_module_init - entry point * * Probe and locate a 3c527 card. This really should probe and locate * all the 3c527 cards in the machine not just one of them. Yes you can * insmod multiple modules for now but it's a hack. */ -int __init init_module(void) +static int __init tc527_module_init(void) { this_device = mc32_probe(-1); if (IS_ERR(this_device)) return PTR_ERR(this_device); return 0; } +module_init(tc527_module_init); /** - * cleanup_module - free resources for an unload + * tc527_module_exit - free resources for an unload * * Unloading time. We release the MCA bus resources and the interrupt * at which point everything is ready to unload. The card must be stopped @@ -1657,11 +1658,12 @@ int __init init_module(void) * transmit operations are allowed to start scribbling into memory. */ -void __exit cleanup_module(void) +static void __exit tc527_module_exit(void) { unregister_netdev(this_device); cleanup_card(this_device); free_netdev(this_device); } +module_exit(tc527_module_exit); #endif /* MODULE */ diff --git a/drivers/net/82596.c b/drivers/net/82596.c index 2797da7..344308a 100644 --- a/drivers/net/82596.c +++ b/drivers/net/82596.c @@ -1567,7 +1567,7 @@ static int debug = -1; module_param(debug, int, 0); MODULE_PARM_DESC(debug, "i82596 debug mask"); -int __init init_module(void) +static int __init i82596_module_init(void) { if (debug >= 0) i596_debug = debug; @@ -1576,8 +1576,9 @@ int __init init_module(void) return PTR_ERR(dev_82596); return 0; } +module_init(i82596_module_init); -void __exit cleanup_module(void) +static void __exit i82596_module_exit(void) { unregister_netdev(dev_82596); #ifdef __mc68000__ @@ -1595,7 +1596,7 @@ void __exit cleanup_module(void) #endif free_netdev(dev_82596); } - +module_exit(i82596_module_exit); #endif /* MODULE */ /* - To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html