All of lore.kernel.org
 help / color / mirror / Atom feed
* [KJ] init_module / cleanup_module cleanup
@ 2005-05-28 10:50 Reiner Herrmann
  2005-05-28 13:13 ` Domen Puncer
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Reiner Herrmann @ 2005-05-28 10:50 UTC (permalink / raw)
  To: kernel-janitors

[-- Attachment #1: Type: text/plain, Size: 198 bytes --]

Hi!

This is my first kernel patch, so I did a rather simple cleanup.
Some network-drivers still used the old
init_module() / cleanup_module() way of de-/registering
at the kernel.

Regards,
Reiner

[-- Attachment #2: netdrivers_module_cleanup.diff --]
[-- Type: text/x-patch, Size: 53430 bytes --]

diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/3c501.c linux-2.6.12-rc5-kj/drivers/net/3c501.c
--- vanilla-2.6.12-rc5-kj/drivers/net/3c501.c	2005-03-02 08:37:30.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/3c501.c	2005-05-28 01:09:05.000000000 +0200
@@ -888,8 +888,6 @@ static struct ethtool_ops netdev_ethtool
 	.set_msglevel		= netdev_set_msglevel,
 };
 
-#ifdef MODULE
-
 static struct net_device *dev_3c501;
 
 module_param(io, int, 0);
@@ -898,7 +896,7 @@ MODULE_PARM_DESC(io, "EtherLink I/O base
 MODULE_PARM_DESC(irq, "EtherLink IRQ number");
 
 /**
- * init_module:
+ * el_init_module:
  *
  * When the driver is loaded as a module this function is called. We fake up
  * a device structure with the base I/O and interrupt set as if it were being
@@ -909,7 +907,7 @@ MODULE_PARM_DESC(irq, "EtherLink IRQ num
  * here also causes the module to be unloaded
  */
  
-int init_module(void)
+static int __init el_init_module(void)
 {
 	dev_3c501 = el1_probe(-1);
 	if (IS_ERR(dev_3c501))
@@ -918,13 +916,13 @@ int init_module(void)
 }
 
 /**
- * cleanup_module:
+ * el_cleanup_module:
  * 
  * The module is being unloaded. We unhook our network device from the system
  * and then free up the resources we took when the card was found.
  */
  
-void cleanup_module(void)
+static void __exit el_cleanup_module(void)
 {
 	struct net_device *dev = dev_3c501;
 	unregister_netdev(dev);
@@ -932,7 +930,8 @@ void cleanup_module(void)
 	free_netdev(dev);
 }
 
-#endif /* MODULE */
+module_init(el_init_module)
+module_exit(el_cleanup_module)
 
 MODULE_AUTHOR("Donald Becker, Alan Cox");
 MODULE_DESCRIPTION("Support for the ancient 3Com 3c501 ethernet card");
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/3c507.c linux-2.6.12-rc5-kj/drivers/net/3c507.c
--- vanilla-2.6.12-rc5-kj/drivers/net/3c507.c	2005-03-02 08:38:17.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/3c507.c	2005-05-28 00:09:39.000000000 +0200
@@ -925,14 +925,13 @@ static struct ethtool_ops netdev_ethtool
 	.set_msglevel		= netdev_set_msglevel,
 };
 
-#ifdef MODULE
 static struct net_device *dev_3c507;
 module_param(io, int, 0);
 module_param(irq, int, 0);
 MODULE_PARM_DESC(io, "EtherLink16 I/O base address");
 MODULE_PARM_DESC(irq, "(ignored)");
 
-int init_module(void)
+static int __init netdev_init_module(void)
 {
 	if (io == 0)
 		printk("3c507: You should not use auto-probing with insmod!\n");
@@ -940,8 +939,7 @@ int init_module(void)
 	return IS_ERR(dev_3c507) ? PTR_ERR(dev_3c507) : 0;
 }
 
-void
-cleanup_module(void)
+static void __exit netdev_cleanup_module(void)
 {
 	struct net_device *dev = dev_3c507;
 	unregister_netdev(dev);
@@ -950,10 +948,11 @@ cleanup_module(void)
 	release_region(dev->base_addr, EL16_IO_EXTENT);
 	free_netdev(dev);
 }
-#endif /* MODULE */
+
 MODULE_LICENSE("GPL");
+module_init(netdev_init_module)
+module_exit(netdev_cleanup_module)
 
-\f
 /*
  * Local variables:
  *  compile-command: "gcc -D__KERNEL__ -I/usr/src/linux/net/inet -I/usr/src/linux/drivers/net -Wall -Wstrict-prototypes -O6 -m486 -c 3c507.c"
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/3c523.c linux-2.6.12-rc5-kj/drivers/net/3c523.c
--- vanilla-2.6.12-rc5-kj/drivers/net/3c523.c	2005-03-02 08:38:38.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/3c523.c	2005-05-27 23:53:09.000000000 +0200
@@ -1263,20 +1263,18 @@ static struct ethtool_ops netdev_ethtool
 	.get_drvinfo		= netdev_get_drvinfo,
 };
 
-#ifdef MODULE
-
 /* Increase if needed ;) */
 #define MAX_3C523_CARDS 4
 
 static struct net_device *dev_elmc[MAX_3C523_CARDS];
-static int irq[MAX_3C523_CARDS];
-static int io[MAX_3C523_CARDS];
+static int irq[MAX_3C523_CARDS] __initdata;
+static int io[MAX_3C523_CARDS] __initdata;
 module_param_array(irq, int, NULL, 0);
 module_param_array(io, int, NULL, 0);
 MODULE_PARM_DESC(io, "EtherLink/MC I/O base address(es)");
 MODULE_PARM_DESC(irq, "EtherLink/MC IRQ number(s)");
 
-int init_module(void)
+static int __init netdev_init_module(void)
 {
 	int this_dev,found = 0;
 
@@ -1307,7 +1305,7 @@ int init_module(void)
 	} else return 0;
 }
 
-void cleanup_module(void)
+static void __exit netdev_cleanup_module(void)
 {
 	int this_dev;
 	for (this_dev=0; this_dev<MAX_3C523_CARDS; this_dev++) {
@@ -1320,4 +1318,5 @@ void cleanup_module(void)
 	}
 }
 
-#endif				/* MODULE */
+module_init(netdev_init_module)
+module_exit(netdev_exit_module)
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/3c527.c linux-2.6.12-rc5-kj/drivers/net/3c527.c
--- vanilla-2.6.12-rc5-kj/drivers/net/3c527.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/3c527.c	2005-05-27 23:49:01.000000000 +0200
@@ -1634,19 +1634,17 @@ static struct ethtool_ops netdev_ethtool
 	.set_msglevel		= netdev_set_msglevel,
 };
 
-#ifdef MODULE
-
 static struct net_device *this_device;
 
 /**
- *	init_module		-	entry point
+ *	netdev_init_module		-	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_module(void)
+static int __init netdev_init_module(void)
 {
 	this_device = mc32_probe(-1);
 	if (IS_ERR(this_device))
@@ -1655,7 +1653,7 @@ int init_module(void)
 }
 
 /**
- *	cleanup_module	-	free resources for an unload
+ *	netdev_cleanup_module	-	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
@@ -1665,11 +1663,12 @@ int init_module(void)
  *	transmit operations are allowed to start scribbling into memory.
  */
 
-void cleanup_module(void)
+static void __exit netdev_cleanup_module(void)
 {
 	unregister_netdev(this_device);
 	cleanup_card(this_device);
 	free_netdev(this_device);
 }
 
-#endif /* MODULE */
+module_init(netdev_init_module)
+module_exit(netdev_exit_module)
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/82596.c linux-2.6.12-rc5-kj/drivers/net/82596.c
--- vanilla-2.6.12-rc5-kj/drivers/net/82596.c	2005-03-02 08:38:13.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/82596.c	2005-05-28 00:16:42.000000000 +0200
@@ -1130,8 +1130,8 @@ static void print_eth(unsigned char *add
 	printk(" %02X%02X, %s\n", add[12], add[13], str);
 }
 
-static int io = 0x300;
-static int irq = 10;
+static int io __initdata = 0x300;
+static int irq __initdata = 10;
 
 struct net_device * __init i82596_probe(int unit)
 {
@@ -1568,7 +1568,6 @@ static void set_multicast_list(struct ne
 	}
 }
 
-#ifdef MODULE
 static struct net_device *dev_82596;
 
 #ifdef ENABLE_APRICOT
@@ -1576,11 +1575,11 @@ module_param(irq, int, 0);
 MODULE_PARM_DESC(irq, "Apricot IRQ number");
 #endif
 
-static int debug = -1;
+static int debug __initdata = -1;
 module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "i82596 debug mask");
 
-int init_module(void)
+static int __init i596_init_module(void)
 {
 	if (debug >= 0)
 		i596_debug = debug;
@@ -1590,7 +1589,7 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit i596_cleanup_module(void)
 {
 	unregister_netdev(dev_82596);
 #ifdef __mc68000__
@@ -1609,8 +1608,9 @@ void cleanup_module(void)
 	free_netdev(dev_82596);
 }
 
-#endif				/* MODULE */
-\f
+module_init(i596_init_module)
+module_exit(i596_cleanup_module)
+
 /*
  * Local variables:
  *  compile-command: "gcc -D__KERNEL__ -I/usr/src/linux/net/inet -Wall -Wstrict-prototypes -O6 -m486 -c 82596.c"
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/8390.c linux-2.6.12-rc5-kj/drivers/net/8390.c
--- vanilla-2.6.12-rc5-kj/drivers/net/8390.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/8390.c	2005-05-27 23:47:17.000000000 +0200
@@ -1115,16 +1115,16 @@ EXPORT_SYMBOL(ei_poll);
 EXPORT_SYMBOL(NS8390_init);
 EXPORT_SYMBOL(__alloc_ei_netdev);
 
-#if defined(MODULE)
-
-int init_module(void)
+static int __init NS8390_init_module(void)
 {
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit NS8390_cleanup_module(void)
 {
 }
 
-#endif /* MODULE */
+module_init(NS8390_init_module)
+module_exit(NS8390_cleanup_module)
+
 MODULE_LICENSE("GPL");
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/apne.c linux-2.6.12-rc5-kj/drivers/net/apne.c
--- vanilla-2.6.12-rc5-kj/drivers/net/apne.c	2005-05-28 00:28:08.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/apne.c	2005-05-27 23:02:38.000000000 +0200
@@ -565,10 +565,9 @@ static irqreturn_t apne_interrupt(int ir
     return IRQ_HANDLED;
 }
 
-#ifdef MODULE
 static struct net_device *apne_dev;
 
-int init_module(void)
+static int __init apne_init_module(void)
 {
 	apne_dev = apne_probe(-1);
 	if (IS_ERR(apne_dev))
@@ -576,7 +575,7 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit apne_cleanup_module(void)
 {
 	unregister_netdev(apne_dev);
 
@@ -591,8 +590,6 @@ void cleanup_module(void)
 	free_netdev(apne_dev);
 }
 
-#endif
-
 static int init_pcmcia(void)
 {
 	u_char config;
@@ -636,3 +633,6 @@ static int init_pcmcia(void)
 }
 
 MODULE_LICENSE("GPL");
+module_init(apne_init_module)
+module_exit(apne_cleanup_module)
+
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/appletalk/cops.c linux-2.6.12-rc5-kj/drivers/net/appletalk/cops.c
--- vanilla-2.6.12-rc5-kj/drivers/net/appletalk/cops.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/appletalk/cops.c	2005-05-28 00:54:43.000000000 +0200
@@ -1023,7 +1023,6 @@ static struct net_device_stats *cops_get
         return &lp->stats;
 }
 
-#ifdef MODULE
 static struct net_device *cops_dev;
 
 MODULE_LICENSE("GPL");
@@ -1031,7 +1030,7 @@ module_param(io, int, 0);
 module_param(irq, int, 0);
 module_param(board_type, int, 0);
 
-int init_module(void)
+static int __init cops_init_module(void)
 {
 	if (io == 0)
 		printk(KERN_WARNING "%s: You shouldn't autoprobe with insmod\n",
@@ -1042,13 +1041,14 @@ int init_module(void)
         return 0;
 }
 
-void cleanup_module(void)
+static void __exit cops_cleanup_module(void)
 {
 	unregister_netdev(cops_dev);
 	cleanup_card(cops_dev);
 	free_netdev(cops_dev);
 }
-#endif /* MODULE */
+module_init(cops_init_module)
+module_exit(cops_cleanup_module)
 
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/arcnet/capmode.c linux-2.6.12-rc5-kj/drivers/net/arcnet/capmode.c
--- vanilla-2.6.12-rc5-kj/drivers/net/arcnet/capmode.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/arcnet/capmode.c	2005-05-28 00:52:16.000000000 +0200
@@ -78,23 +78,21 @@ void arcnet_cap_init(void)
 }
 
 
-#ifdef MODULE
-
-int __init init_module(void)
+static int __init capmode_init_module(void)
 {
 	printk(VERSION);
 	arcnet_cap_init();
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit capmode_cleanup_module(void)
 {
 	arcnet_unregister_proto(&capmode_proto);
 }
 
 MODULE_LICENSE("GPL");
-#endif				/* MODULE */
-
+module_init(capmode_init_module)
+module_exit(capmode_cleanup_module)
 
 
 /* packet receiver */
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/arcnet/com20020.c linux-2.6.12-rc5-kj/drivers/net/arcnet/com20020.c
--- vanilla-2.6.12-rc5-kj/drivers/net/arcnet/com20020.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/arcnet/com20020.c	2005-05-28 00:50:10.000000000 +0200
@@ -337,21 +337,21 @@ static void com20020_set_mc_list(struct 
 	}
 }
 
-#ifdef MODULE
-
 EXPORT_SYMBOL(com20020_check);
 EXPORT_SYMBOL(com20020_found);
 
 MODULE_LICENSE("GPL");
 
-int init_module(void)
+static int __init com20020_init_module(void)
 {
 	BUGLVL(D_NORMAL) printk(VERSION);
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit com20020_cleanup_module(void)
 {
 }
 
-#endif				/* MODULE */
+module_init(com20020_init_module)
+module_exit(com20020_cleanup_module)
+
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/at1700.c linux-2.6.12-rc5-kj/drivers/net/at1700.c
--- vanilla-2.6.12-rc5-kj/drivers/net/at1700.c	2005-03-02 08:38:07.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/at1700.c	2005-05-28 00:37:35.000000000 +0200
@@ -896,7 +896,6 @@ set_rx_mode(struct net_device *dev)
 	return;
 }
 
-#ifdef MODULE
 static struct net_device *dev_at1700;
 
 module_param(io, int, 0);
@@ -906,7 +905,7 @@ MODULE_PARM_DESC(io, "AT1700/FMV18X I/O 
 MODULE_PARM_DESC(irq, "AT1700/FMV18X IRQ number");
 MODULE_PARM_DESC(net_debug, "AT1700/FMV18X debug level (0-6)");
 
-int init_module(void)
+static int __init at1700_init_module(void)
 {
 	if (io == 0)
 		printk("at1700: You should not use auto-probing with insmod!\n");
@@ -916,16 +915,15 @@ int init_module(void)
 	return 0;
 }
 
-void
-cleanup_module(void)
+static void __exit at1700_cleanup_module(void)
 {
 	unregister_netdev(dev_at1700);
 	cleanup_card(dev_at1700);
 	free_netdev(dev_at1700);
 }
-#endif /* MODULE */
 MODULE_LICENSE("GPL");
-
+module_init(at1700_init_module)
+module_exit(at1700_cleanup_module)
 \f
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/atari_bionet.c linux-2.6.12-rc5-kj/drivers/net/atari_bionet.c
--- vanilla-2.6.12-rc5-kj/drivers/net/atari_bionet.c	2005-03-02 08:38:10.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/atari_bionet.c	2005-05-28 00:17:42.000000000 +0200
@@ -642,12 +642,9 @@ static struct net_device_stats *net_get_
 	return &lp->stats;
 }
 
-
-#ifdef MODULE
-
 static struct net_device *bio_dev;
 
-int init_module(void)
+static int __init bionet_init_module(void)
 {
 	bio_dev = bionet_probe(-1);
 	if (IS_ERR(bio_dev))
@@ -655,13 +652,15 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit bionet_cleanup_module(void)
 {
 	unregister_netdev(bio_dev);
 	free_netdev(bio_dev);
 }
 
-#endif /* MODULE */
+module_init(bionet_init_module)
+module_exit(bionet_cleanup_module)
+
 
 /* Local variables:
  *  compile-command: "gcc -D__KERNEL__ -I/usr/src/linux/include
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/atarilance.c linux-2.6.12-rc5-kj/drivers/net/atarilance.c
--- vanilla-2.6.12-rc5-kj/drivers/net/atarilance.c	2005-03-02 08:38:37.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/atarilance.c	2005-05-28 00:01:09.000000000 +0200
@@ -1176,11 +1176,9 @@ static int lance_set_mac_address( struct
 	return( 0 );
 }
 
-\f
-#ifdef MODULE
 static struct net_device *atarilance_dev;
 
-int init_module(void)
+static int __init lance_init_module(void)
 {
 	atarilance_dev = atarilance_probe(-1);
 	if (IS_ERR(atarilance_dev))
@@ -1188,15 +1186,15 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit lance_cleanup_module(void)
 {
 	unregister_netdev(atarilance_dev);
 	free_irq(atarilance_dev->irq, atarilance_dev);
 	free_netdev(atarilance_dev);
 }
 
-#endif /* MODULE */
-\f
+module_init(lance_init_module)
+module_exit(lance_cleanup_module)
 
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/atari_pamsnet.c linux-2.6.12-rc5-kj/drivers/net/atari_pamsnet.c
--- vanilla-2.6.12-rc5-kj/drivers/net/atari_pamsnet.c	2005-03-02 08:37:55.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/atari_pamsnet.c	2005-05-28 00:41:44.000000000 +0200
@@ -863,12 +863,9 @@ static struct net_device_stats *net_get_
 	return &lp->stats;
 }
 
-
-#ifdef MODULE
-
 static struct net_device *pam_dev;
 
-int init_module(void)
+static int __init pamsnet_init_module(void)
 {
 	pam_dev = pamsnet_probe(-1);
 	if (IS_ERR(pam_dev))
@@ -876,13 +873,14 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit pamsnet_cleanup_module(void)
 {
 	unregister_netdev(pam_dev);
 	free_netdev(pam_dev);
 }
 
-#endif /* MODULE */
+module_init(pamsnet_init_module)
+module_exit(pamsnet_cleanup_module)
 
 /* Local variables:
  *  compile-command: "gcc -D__KERNEL__ -I/usr/src/linux/include
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/cs89x0.c linux-2.6.12-rc5-kj/drivers/net/cs89x0.c
--- vanilla-2.6.12-rc5-kj/drivers/net/cs89x0.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/cs89x0.c	2005-05-27 23:44:44.000000000 +0200
@@ -1691,8 +1691,6 @@ static int set_mac_address(struct net_de
 	return 0;
 }
 
-#ifdef MODULE
-
 static struct net_device *dev_cs89x0;
 
 /*
@@ -1700,15 +1698,15 @@ static struct net_device *dev_cs89x0;
  * avoid breaking someone's startup scripts 
  */
 
-static int io;
-static int irq;
-static int debug;
-static char media[8];
-static int duplex=-1;
-
-static int use_dma;			/* These generate unused var warnings if ALLOW_DMA = 0 */
-static int dma;
-static int dmasize=16;			/* or 64 */
+static int io __initdata;
+static int irq __initdata;
+static int debug __initdata;
+static char media[8] __initdata;
+static int duplex __initdata = -1;
+
+static int use_dma __initdata;			/* These generate unused var warnings if ALLOW_DMA = 0 */
+static int dma __initdata;
+static int dmasize __initdata = 16;		/* or 64 */
 
 module_param(io, int, 0);
 module_param(irq, int, 0);
@@ -1768,8 +1766,8 @@ MODULE_LICENSE("GPL");
 
 */
 
-int
-init_module(void)
+static int __init
+net_init_module(void)
 {
 	struct net_device *dev = alloc_etherdev(sizeof(struct net_local));
 	struct net_local *lp;
@@ -1845,16 +1843,18 @@ out:
 	return ret;
 }
 
-void
-cleanup_module(void)
+static void __exit
+net_cleanup_module(void)
 {
 	unregister_netdev(dev_cs89x0);
 	outw(PP_ChipID, dev_cs89x0->base_addr + ADD_PORT);
 	release_region(dev_cs89x0->base_addr, NETCARD_IO_EXTENT);
 	free_netdev(dev_cs89x0);
 }
-#endif /* MODULE */
-\f
+
+module_init(net_init_module)
+module_exit(net_cleanup_module)
+
 /*
  * Local variables:
  *  version-control: t
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/de620.c linux-2.6.12-rc5-kj/drivers/net/de620.c
--- vanilla-2.6.12-rc5-kj/drivers/net/de620.c	2005-03-02 08:38:09.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/de620.c	2005-05-28 00:25:19.000000000 +0200
@@ -1009,10 +1009,10 @@ static int __init read_eeprom(struct net
  * Loadable module skeleton
  *
  */
-#ifdef MODULE
+
 static struct net_device *de620_dev;
 
-int init_module(void)
+static int __init de620_init_module(void)
 {
 	de620_dev = de620_probe(-1);
 	if (IS_ERR(de620_dev))
@@ -1020,16 +1020,17 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit de620_cleanup_module(void)
 {
 	unregister_netdev(de620_dev);
 	release_region(de620_dev->base_addr, 3);
 	free_netdev(de620_dev);
 }
-#endif /* MODULE */
+
 MODULE_LICENSE("GPL");
+module_init(de620_init_module)
+module_exit(de620_cleanup_module)
 
-\f
 /*
  * (add '-DMODULE' when compiling as loadable module)
  *
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/eexpress.c linux-2.6.12-rc5-kj/drivers/net/eexpress.c
--- vanilla-2.6.12-rc5-kj/drivers/net/eexpress.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/eexpress.c	2005-05-27 23:27:55.000000000 +0200
@@ -1683,13 +1683,11 @@ eexp_set_multicast(struct net_device *de
  * MODULE stuff
  */
 
-#ifdef MODULE
-
 #define EEXP_MAX_CARDS     4    /* max number of cards to support */
 
 static struct net_device *dev_eexp[EEXP_MAX_CARDS];
-static int irq[EEXP_MAX_CARDS];
-static int io[EEXP_MAX_CARDS];
+static int irq[EEXP_MAX_CARDS] __initdata;
+static int io[EEXP_MAX_CARDS] __initdata;
 
 module_param_array(io, int, NULL, 0);
 module_param_array(irq, int, NULL, 0);
@@ -1702,7 +1700,7 @@ MODULE_LICENSE("GPL");
  * are specified, we verify and then use them.  If no parameters are given, we
  * autoprobe for one card only.
  */
-int init_module(void)
+static int __init eexp_init_module(void)
 {
 	struct net_device *dev;
 	int this_dev, found = 0;
@@ -1730,7 +1728,7 @@ int init_module(void)
 	return -ENXIO;
 }
 
-void cleanup_module(void)
+static void __exit eexp_cleanup_module(void)
 {
 	int this_dev;
 
@@ -1742,7 +1740,9 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif
+
+module_init(eexp_init_module)
+module_exit(eexp_cleanup_module)
 
 /*
  * Local Variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/eth16i.c linux-2.6.12-rc5-kj/drivers/net/eth16i.c
--- vanilla-2.6.12-rc5-kj/drivers/net/eth16i.c	2005-03-02 08:38:25.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/eth16i.c	2005-05-28 00:07:48.000000000 +0200
@@ -1386,8 +1386,6 @@ static void eth16i_select_regbank(unsign
 	outb( ((data & 0xF3) | ( (banknbr & 0x03) << 2)), ioaddr + CONFIG_REG_1); 
 }
 
-#ifdef MODULE
-
 static ushort eth16i_parse_mediatype(const char* s)
 {
 	if(!s)
@@ -1408,12 +1406,12 @@ static ushort eth16i_parse_mediatype(con
 #define MAX_ETH16I_CARDS 4  /* Max number of Eth16i cards per module */
 
 static struct net_device *dev_eth16i[MAX_ETH16I_CARDS];
-static int io[MAX_ETH16I_CARDS];
+static int io[MAX_ETH16I_CARDS] __initdata;
 #if 0
-static int irq[MAX_ETH16I_CARDS];
+static int irq[MAX_ETH16I_CARDS] __initdata;
 #endif
-static char* mediatype[MAX_ETH16I_CARDS];
-static int debug = -1;
+static char* mediatype[MAX_ETH16I_CARDS] __initdata;
+static int debug __initdata = -1;
 
 MODULE_AUTHOR("Mika Kuoppala <miku@iki.fi>");
 MODULE_DESCRIPTION("ICL EtherTeam 16i/32 driver");
@@ -1434,7 +1432,7 @@ MODULE_PARM_DESC(mediatype, "eth16i medi
 module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "eth16i debug level (0-6)");
 
-int init_module(void)
+static int __init eth16i_init_module(void)
 {
 	int this_dev, found = 0;
 	struct net_device *dev;
@@ -1479,7 +1477,7 @@ int init_module(void)
 	return -ENXIO;
 }
 	
-void cleanup_module(void)
+static void __exit eth16i_cleanup_module(void)
 {
 	int this_dev;
 
@@ -1494,7 +1492,9 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif /* MODULE */
+
+module_init(eth16i_init_module)
+module_exit(eth16i_cleanup_module)
 
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/fmv18x.c linux-2.6.12-rc5-kj/drivers/net/fmv18x.c
--- vanilla-2.6.12-rc5-kj/drivers/net/fmv18x.c	2005-03-02 08:37:48.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/fmv18x.c	2005-05-28 00:44:16.000000000 +0200
@@ -647,7 +647,6 @@ static void set_multicast_list(struct ne
 		outb(2, ioaddr + RX_MODE);	/* Disable promiscuous, use normal mode */
 }
 
-#ifdef MODULE
 static struct net_device *dev_fmv18x;
 
 MODULE_PARM(io, "i");
@@ -658,7 +657,7 @@ MODULE_PARM_DESC(irq, "FMV-18X IRQ numbe
 MODULE_PARM_DESC(net_debug, "FMV-18X debug level (0-1,5-6)");
 MODULE_LICENSE("GPL");
 
-int init_module(void)
+static int __init fmv18x_init_module(void)
 {
 	if (io == 0)
 		printk("fmv18x: You should not use auto-probing with insmod!\n");
@@ -668,15 +667,16 @@ int init_module(void)
 	return 0;
 }
 
-void
-cleanup_module(void)
+static void __exit fmv18x_cleanup_module(void)
 {
 	unregister_netdev(dev_fmv18x);
 	free_irq(dev_fmv18x->irq, dev_fmv18x);
 	release_region(dev_fmv18x->base_addr, FMV18X_IO_EXTENT);
 	free_netdev(dev_fmv18x);
 }
-#endif /* MODULE */
+
+module_init(fmv18x_init_module)
+module_exit(fmv18x_cleanup_module)
 \f
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/ibmlana.c linux-2.6.12-rc5-kj/drivers/net/ibmlana.c
--- vanilla-2.6.12-rc5-kj/drivers/net/ibmlana.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/ibmlana.c	2005-05-27 23:18:58.000000000 +0200
@@ -1015,13 +1015,11 @@ static int ibmlana_probe(struct net_devi
  * modularization support
  * ------------------------------------------------------------------------ */
 
-#ifdef MODULE
-
 #define DEVMAX 5
 
 static struct net_device *moddevs[DEVMAX];
-static int irq;
-static int io;
+static int irq __initdata;
+static int io __initdata;
 
 module_param(irq, int, 0);
 module_param(io, int, 0);
@@ -1029,7 +1027,7 @@ MODULE_PARM_DESC(irq, "IBM LAN/A IRQ num
 MODULE_PARM_DESC(io, "IBM LAN/A I/O base address");
 MODULE_LICENSE("GPL");
 
-int init_module(void)
+static int __init ibmlana_init_module(void)
 {
 	int z;
 
@@ -1059,7 +1057,7 @@ int init_module(void)
 	return (z > 0) ? 0 : -EIO;
 }
 
-void cleanup_module(void)
+static void __exit ibmlana_cleanup_module(void)
 {
 	int z;
 	for (z = 0; z < DEVMAX; z++) {
@@ -1077,4 +1075,7 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif				/* MODULE */
+
+module_init(ibmlana_init_module)
+module_exit(ibmlana_cleanup_module)
+
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/isa-skeleton.c linux-2.6.12-rc5-kj/drivers/net/isa-skeleton.c
--- vanilla-2.6.12-rc5-kj/drivers/net/isa-skeleton.c	2005-03-02 08:38:32.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/isa-skeleton.c	2005-05-28 00:03:40.000000000 +0200
@@ -664,16 +664,14 @@ set_multicast_list(struct net_device *de
 		outw(0, ioaddr);
 }
 
-#ifdef MODULE
-
 static struct net_device *this_device;
-static int io = 0x300;
-static int irq;
-static int dma;
-static int mem;
+static int io __initdata = 0x300;
+static int irq __initdata;
+static int dma __initdata;
+static int mem __initdata;
 MODULE_LICENSE("GPL");
 
-int init_module(void)
+static int __init net_init_module(void)
 {
 	struct net_device *dev;
 	int result;
@@ -701,15 +699,15 @@ int init_module(void)
 	return -ENXIO;
 }
 
-void
-cleanup_module(void)
+static void __exit net_cleanup_module(void)
 {
 	unregister_netdev(this_device);
 	cleanup_card(this_device);
 	free_netdev(this_device);
 }
 
-#endif /* MODULE */
+module_init(net_init_module)
+module_exit(net_cleanup_module)
 
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/lance.c linux-2.6.12-rc5-kj/drivers/net/lance.c
--- vanilla-2.6.12-rc5-kj/drivers/net/lance.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/lance.c	2005-05-27 23:20:17.000000000 +0200
@@ -307,7 +307,6 @@ static struct net_device_stats *lance_ge
 static void set_multicast_list(struct net_device *dev);
 static void lance_tx_timeout (struct net_device *dev);
 
-\f
 
 static void cleanup_card(struct net_device *dev)
 {
@@ -320,13 +319,12 @@ static void cleanup_card(struct net_devi
 	kfree(lp);
 }
 
-#ifdef MODULE
 #define MAX_CARDS		8	/* Max number of interfaces (cards) per module */
 
 static struct net_device *dev_lance[MAX_CARDS];
-static int io[MAX_CARDS];
-static int dma[MAX_CARDS];
-static int irq[MAX_CARDS];
+static int io[MAX_CARDS] __initdata;
+static int dma[MAX_CARDS] __initdata;
+static int irq[MAX_CARDS] __initdata;
 
 module_param_array(io, int, NULL, 0);
 module_param_array(dma, int, NULL, 0);
@@ -337,7 +335,7 @@ MODULE_PARM_DESC(dma, "LANCE/PCnet ISA D
 MODULE_PARM_DESC(irq, "LANCE/PCnet IRQ number (ignored for some devices)");
 MODULE_PARM_DESC(lance_debug, "LANCE/PCnet debug level (0-7)");
 
-int init_module(void)
+static int __init lance_init_module(void)
 {
 	struct net_device *dev;
 	int this_dev, found = 0;
@@ -370,7 +368,7 @@ int init_module(void)
 	return -ENXIO;
 }
 
-void cleanup_module(void)
+static void __exit lance_cleanup_module(void)
 {
 	int this_dev;
 
@@ -383,8 +381,10 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif /* MODULE */
+
 MODULE_LICENSE("GPL");
+module_init(lance_init_module)
+module_exit(lance_cleanup_module)
 
 
 /* Starting in v2.1.*, the LANCE/PCnet probe is now similar to the other
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/lne390.c linux-2.6.12-rc5-kj/drivers/net/lne390.c
--- vanilla-2.6.12-rc5-kj/drivers/net/lne390.c	2005-03-02 08:38:26.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/lne390.c	2005-05-28 00:05:02.000000000 +0200
@@ -395,12 +395,11 @@ static int lne390_close(struct net_devic
 	return 0;
 }
 
-#ifdef MODULE
 #define MAX_LNE_CARDS	4	/* Max number of LNE390 cards per module */
 static struct net_device *dev_lne[MAX_LNE_CARDS];
-static int io[MAX_LNE_CARDS];
-static int irq[MAX_LNE_CARDS];
-static int mem[MAX_LNE_CARDS];
+static int io[MAX_LNE_CARDS] __initdata;
+static int irq[MAX_LNE_CARDS] __initdata;
+static int mem[MAX_LNE_CARDS] __initdata;
 
 module_param_array(io, int, NULL, 0);
 module_param_array(irq, int, NULL, 0);
@@ -411,7 +410,7 @@ MODULE_PARM_DESC(mem, "memory base addre
 MODULE_DESCRIPTION("Mylex LNE390A/B EISA Ethernet driver");
 MODULE_LICENSE("GPL");
 
-int init_module(void)
+static int __init lne390_init_module(void)
 {
 	struct net_device *dev;
 	int this_dev, found = 0;
@@ -441,7 +440,7 @@ int init_module(void)
 	return -ENXIO;
 }
 
-void cleanup_module(void)
+static void __exit lne390_cleanup_module(void)
 {
 	int this_dev;
 
@@ -454,5 +453,7 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif /* MODULE */
+
+module_init(lne390_init_module)
+module_exit(lne390_cleanup_module)
 
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/mac8390.c linux-2.6.12-rc5-kj/drivers/net/mac8390.c
--- vanilla-2.6.12-rc5-kj/drivers/net/mac8390.c	2005-03-02 08:38:10.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/mac8390.c	2005-05-28 00:22:15.000000000 +0200
@@ -374,14 +374,13 @@ out:
 	return ERR_PTR(err);
 }
 
-#ifdef MODULE
 MODULE_AUTHOR("David Huggins-Daines <dhd@debian.org> and others");
 MODULE_DESCRIPTION("Macintosh NS8390-based Nubus Ethernet driver");
 MODULE_LICENSE("GPL");
 
 /* overkill, of course */
 static struct net_device *dev_mac8390[15];
-int init_module(void)
+static int __init mac8390_init_module(void)
 {
 	int i;
 	for (i = 0; i < 15; i++) {
@@ -397,7 +396,7 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit mac8390_cleanup_module(void)
 {
 	int i;
 	for (i = 0; i < 15; i++) {
@@ -409,7 +408,8 @@ void cleanup_module(void)
 	}
 }
 
-#endif /* MODULE */
+module_init(mac8390_init_module)
+module_exit(mac8390_cleanup_module)
 
 static int __init mac8390_initdev(struct net_device * dev, struct nubus_dev * ndev,
 			    enum mac8390_type type)
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/mac89x0.c linux-2.6.12-rc5-kj/drivers/net/mac89x0.c
--- vanilla-2.6.12-rc5-kj/drivers/net/mac89x0.c	2005-03-02 08:38:09.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/mac89x0.c	2005-05-28 00:31:01.000000000 +0200
@@ -624,17 +624,15 @@ static int set_mac_address(struct net_de
 	return 0;
 }
 
-#ifdef MODULE
-
 static struct net_device *dev_cs89x0;
-static int debug;
+static int debug __initdata;
 
 MODULE_PARM(debug, "i");
 MODULE_PARM_DESC(debug, "CS89[02]0 debug level (0-5)");
 MODULE_LICENSE("GPL");
 
-int
-init_module(void)
+static int __init
+mac90x0_init_module(void)
 {
 	net_debug = debug;
         dev_cs89x0 = mac89x0_probe(-1);
@@ -645,14 +643,16 @@ init_module(void)
 	return 0;
 }
 
-void
-cleanup_module(void)
+static void __exit
+mac90x0cleanup_module(void)
 {
 	unregister_netdev(dev_cs89x0);
 	nubus_writew(0, dev_cs89x0->base_addr + ADD_PORT);
 	free_netdev(dev_cs89x0);
 }
-#endif /* MODULE */
+
+module_init(mac90x0_init_module)
+module_exit(mac90x0_cleanup_module)
 \f
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/mvme147.c linux-2.6.12-rc5-kj/drivers/net/mvme147.c
--- vanilla-2.6.12-rc5-kj/drivers/net/mvme147.c	2005-03-02 08:38:00.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/mvme147.c	2005-05-28 00:39:22.000000000 +0200
@@ -180,11 +180,10 @@ static int m147lance_close(struct net_de
 	return 0;
 }
 
-#ifdef MODULE
 MODULE_LICENSE("GPL");
 
 static struct net_device *dev_mvme147_lance;
-int init_module(void)
+static int __init m147lance_init_module(void)
 {
 	dev_mvme147_lance = mvme147lance_probe(-1);
 	if (IS_ERR(dev_mvme147_lance))
@@ -192,7 +191,7 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit m147lance_cleanup_module(void)
 {
 	struct m147lance_private *lp = dev_mvme147_lance->priv;
 	unregister_netdev(dev_mvme147_lance);
@@ -200,4 +199,5 @@ void cleanup_module(void)
 	free_netdev(dev_mvme147_lance);
 }
 
-#endif /* MODULE */
+module_init(m147lance_init_module)
+module_exit(m147lance_cleanup_module)
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/ne2.c linux-2.6.12-rc5-kj/drivers/net/ne2.c
--- vanilla-2.6.12-rc5-kj/drivers/net/ne2.c	2005-05-28 00:28:08.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/ne2.c	2005-05-27 23:25:46.000000000 +0200
@@ -769,12 +769,11 @@ retry:
 }
 
 
-#ifdef MODULE
 #define MAX_NE_CARDS	4	/* Max number of NE cards per module */
 static struct net_device *dev_ne[MAX_NE_CARDS];
-static int io[MAX_NE_CARDS];
-static int irq[MAX_NE_CARDS];
-static int bad[MAX_NE_CARDS];	/* 0xbad = bad sig or no reset ack */
+static int io[MAX_NE_CARDS] __initdata;
+static int irq[MAX_NE_CARDS] __initdata;
+static int bad[MAX_NE_CARDS] __initdata;	/* 0xbad = bad sig or no reset ack */
 MODULE_LICENSE("GPL");
 
 module_param_array(io, int, NULL, 0);
@@ -786,7 +785,7 @@ MODULE_PARM_DESC(bad, "(ignored)");
 
 /* Module code fixed by David Weinehall */
 
-int init_module(void)
+static int __init ne_init_module(void)
 {
 	struct net_device *dev;
 	int this_dev, found = 0;
@@ -814,7 +813,7 @@ int init_module(void)
 	return -ENXIO;
 }
 
-void cleanup_module(void)
+static void __exit ne_cleanup_module(void)
 {
 	int this_dev;
 
@@ -827,4 +826,7 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif /* MODULE */
+
+module_init(ne_init_module)
+module_exit(ne_cleanup_module)
+
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/ne.c linux-2.6.12-rc5-kj/drivers/net/ne.c
--- vanilla-2.6.12-rc5-kj/drivers/net/ne.c	2005-05-28 00:28:08.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/ne.c	2005-05-27 23:25:24.000000000 +0200
@@ -793,13 +793,11 @@ retry:
 	return;
 }
 
-\f
-#ifdef MODULE
 #define MAX_NE_CARDS	4	/* Max number of NE cards per module */
 static struct net_device *dev_ne[MAX_NE_CARDS];
-static int io[MAX_NE_CARDS];
-static int irq[MAX_NE_CARDS];
-static int bad[MAX_NE_CARDS];	/* 0xbad = bad sig or no reset ack */
+static int io[MAX_NE_CARDS] __initdata;
+static int irq[MAX_NE_CARDS] __initdata;
+static int bad[MAX_NE_CARDS] __initdata;	/* 0xbad = bad sig or no reset ack */
 
 module_param_array(io, int, NULL, 0);
 module_param_array(irq, int, NULL, 0);
@@ -815,7 +813,7 @@ that the ne2k probe is the last 8390 bas
 is at boot) and so the probe will get confused by any other 8390 cards.
 ISA device autoprobes on a running machine are not recommended anyway. */
 
-int init_module(void)
+static int __init ne_init_module(void)
 {
 	int this_dev, found = 0;
 
@@ -847,7 +845,7 @@ int init_module(void)
 	return -ENODEV;
 }
 
-void cleanup_module(void)
+static void __exit ne_cleanup_module(void)
 {
 	int this_dev;
 
@@ -860,4 +858,7 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif /* MODULE */
+
+module_init(ne_init_module)
+module_exit(ne_cleanup_module)
+
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/ne-h8300.c linux-2.6.12-rc5-kj/drivers/net/ne-h8300.c
--- vanilla-2.6.12-rc5-kj/drivers/net/ne-h8300.c	2005-05-28 00:28:08.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/ne-h8300.c	2005-05-27 23:24:54.000000000 +0200
@@ -593,13 +593,11 @@ retry:
 	return;
 }
 
-\f
-#ifdef MODULE
 #define MAX_NE_CARDS	1	/* Max number of NE cards per module */
 static struct net_device *dev_ne[MAX_NE_CARDS];
-static int io[MAX_NE_CARDS];
-static int irq[MAX_NE_CARDS];
-static int bad[MAX_NE_CARDS];	/* 0xbad = bad sig or no reset ack */
+static int io[MAX_NE_CARDS] __initdata;
+static int irq[MAX_NE_CARDS] __initdata;
+static int bad[MAX_NE_CARDS] __initdata;	/* 0xbad = bad sig or no reset ack */
 
 MODULE_PARM(io, "1-" __MODULE_STRING(MAX_NE_CARDS) "i");
 MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_NE_CARDS) "i");
@@ -614,7 +612,7 @@ that the ne2k probe is the last 8390 bas
 is at boot) and so the probe will get confused by any other 8390 cards.
 ISA device autoprobes on a running machine are not recommended anyway. */
 
-int init_module(void)
+static int __init ne_init_module(void)
 {
 	int this_dev, found = 0;
 	int err;
@@ -655,7 +653,7 @@ int init_module(void)
 	return -ENODEV;
 }
 
-void cleanup_module(void)
+static void __exit ne_cleanup_module(void)
 {
 	int this_dev;
 
@@ -668,4 +666,7 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif /* MODULE */
+
+module_init(ne_init_module)
+module_exit(ne_cleanup_module)
+
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/ni5010.c linux-2.6.12-rc5-kj/drivers/net/ni5010.c
--- vanilla-2.6.12-rc5-kj/drivers/net/ni5010.c	2005-03-02 08:38:08.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/ni5010.c	2005-05-28 00:34:50.000000000 +0200
@@ -763,7 +763,6 @@ static void ni5010_show_registers(struct
 	PRINTK3((KERN_DEBUG "%s: ISTAT %#2.2x\n", dev->name, inb(IE_ISTAT)));
 }
 
-#ifdef MODULE
 static struct net_device *dev_ni5010;
 
 MODULE_PARM(io, "i");
@@ -771,7 +770,7 @@ MODULE_PARM(irq, "i");
 MODULE_PARM_DESC(io, "ni5010 I/O base address");
 MODULE_PARM_DESC(irq, "ni5010 IRQ number");
 
-int init_module(void)
+static int __init ni5010_init_module(void)
 {
 	PRINTK2((KERN_DEBUG "%s: entering init_module\n", boardname));
 	/*
@@ -792,15 +791,16 @@ int init_module(void)
         return 0;
 }
 
-void cleanup_module(void)
+static void __exit ni5010_cleanup_module(void)
 {
 	PRINTK2((KERN_DEBUG "%s: entering cleanup_module\n", boardname));
 	unregister_netdev(dev_ni5010);
 	release_region(dev_ni5010->base_addr, NI5010_IO_EXTENT);
 	free_netdev(dev_ni5010);
 }
-#endif /* MODULE */
 MODULE_LICENSE("GPL");
+module_init(ni5010_init_module)
+module_exit(ni5010_cleanup_module)
 
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/ni52.c linux-2.6.12-rc5-kj/drivers/net/ni52.c
--- vanilla-2.6.12-rc5-kj/drivers/net/ni52.c	2005-03-02 08:38:10.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/ni52.c	2005-05-28 00:20:03.000000000 +0200
@@ -1311,7 +1311,6 @@ static void set_multicast_list(struct ne
 	netif_wake_queue(dev);
 }
 
-#ifdef MODULE
 static struct net_device *dev_ni52;
 
 module_param(io, int, 0);
@@ -1323,7 +1322,7 @@ MODULE_PARM_DESC(irq, "NI5210 IRQ number
 MODULE_PARM_DESC(memstart, "NI5210 memory base address,required");
 MODULE_PARM_DESC(memend, "NI5210 memory end address,required");
 
-int init_module(void)
+static int __init ni52_init_module(void)
 {
 	if(io <= 0x0 || !memend || !memstart || irq < 2) {
 		printk("ni52: Autoprobing not allowed for modules.\nni52: Set symbols 'io' 'irq' 'memstart' and 'memend'\n");
@@ -1335,13 +1334,12 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit ni52_cleanup_module(void)
 {
 	unregister_netdev(dev_ni52);
 	release_region(dev_ni52->base_addr, NI52_TOTAL_SIZE);
 	free_netdev(dev_ni52);
 }
-#endif /* MODULE */
 
 #if 0
 /*
@@ -1380,6 +1378,8 @@ void ni52_dump(struct net_device *dev,vo
 }
 #endif
 MODULE_LICENSE("GPL");
+module_init(ni52_init_module)
+module_exit(ni52_cleanup_module)
 
 /*
  * END: linux/drivers/net/ni52.c
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/ni65.c linux-2.6.12-rc5-kj/drivers/net/ni65.c
--- vanilla-2.6.12-rc5-kj/drivers/net/ni65.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/ni65.c	2005-05-27 23:09:56.000000000 +0200
@@ -1246,7 +1246,6 @@ static void set_multicast_list(struct ne
 	netif_wake_queue(dev);
 }
 
-#ifdef MODULE
 static struct net_device *dev_ni65;
 
 module_param(irq, int, 0);
@@ -1256,21 +1255,22 @@ MODULE_PARM_DESC(irq, "ni6510 IRQ number
 MODULE_PARM_DESC(io, "ni6510 I/O base address");
 MODULE_PARM_DESC(dma, "ni6510 ISA DMA channel (ignored for some cards)");
 
-int init_module(void)
+static int __init ni65_init_module(void)
 {
  	dev_ni65 = ni65_probe(-1);
 	return IS_ERR(dev_ni65) ? PTR_ERR(dev_ni65) : 0;
 }
 
-void cleanup_module(void)
+static void __exit ni65_cleanup_module(void)
 {
  	unregister_netdev(dev_ni65);
  	cleanup_card(dev_ni65);
  	free_netdev(dev_ni65);
 }
-#endif /* MODULE */
 
 MODULE_LICENSE("GPL");
+module_init(ni65_init_module)
+module_exit(ni65_cleanup_module)
 
 /*
  * END of ni65.c
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/seeq8005.c linux-2.6.12-rc5-kj/drivers/net/seeq8005.c
--- vanilla-2.6.12-rc5-kj/drivers/net/seeq8005.c	2005-03-02 08:38:17.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/seeq8005.c	2005-05-28 00:12:32.000000000 +0200
@@ -733,8 +733,6 @@ static void hardware_send_packet(struct 
 }
 
 
-#ifdef MODULE
-
 static struct net_device *dev_seeq;
 MODULE_LICENSE("GPL");
 module_param(io, int, 0);
@@ -742,7 +740,7 @@ module_param(irq, int, 0);
 MODULE_PARM_DESC(io, "SEEQ 8005 I/O base address");
 MODULE_PARM_DESC(irq, "SEEQ 8005 IRQ number");
 
-int init_module(void)
+static int __init seeq8005_init_module(void)
 {
 	dev_seeq = seeq8005_probe(-1);
 	if (IS_ERR(dev_seeq))
@@ -750,15 +748,16 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit seeq8005_cleanup_module(void)
 {
 	unregister_netdev(dev_seeq);
 	release_region(dev_seeq->base_addr, SEEQ8005_IO_EXTENT);
 	free_netdev(dev_seeq);
 }
 
-#endif /* MODULE */
-\f
+module_init(seeq8005_init_module)
+module_exit(seeq8005_cleanup_module)
+
 /*
  * Local variables:
  *  compile-command: "gcc -D__KERNEL__ -I/usr/src/linux/net/inet -Wall -Wstrict-prototypes -O6 -m486 -c skeleton.c"
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/sk_mca.c linux-2.6.12-rc5-kj/drivers/net/sk_mca.c
--- vanilla-2.6.12-rc5-kj/drivers/net/sk_mca.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/sk_mca.c	2005-05-27 23:08:08.000000000 +0200
@@ -1178,14 +1178,13 @@ struct net_device * __init skmca_probe(i
  * modularization support
  * ------------------------------------------------------------------------ */
 
-#ifdef MODULE
 MODULE_LICENSE("GPL");
 
 #define DEVMAX 5
 
 static struct net_device *moddevs[DEVMAX];
 
-int init_module(void)
+static int __init skmca_init_module(void)
 {
 	int z;
 
@@ -1201,7 +1200,7 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit skmca_cleanup_module(void)
 {
 	int z;
 
@@ -1214,4 +1213,7 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif				/* MODULE */
+
+module_init(skmca_init_module)
+module_exit(skmca_cleanup_module)
+
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/slhc.c linux-2.6.12-rc5-kj/drivers/net/slhc.c
--- vanilla-2.6.12-rc5-kj/drivers/net/slhc.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/slhc.c	2005-05-27 23:06:45.000000000 +0200
@@ -701,20 +701,17 @@ EXPORT_SYMBOL(slhc_compress);
 EXPORT_SYMBOL(slhc_uncompress);
 EXPORT_SYMBOL(slhc_toss);
 
-#ifdef MODULE
-
-int init_module(void)
+static int __init slhc_init_module(void)
 {
 	printk(KERN_INFO "CSLIP: code copyright 1989 Regents of the University of California\n");
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit slhc_cleanup_module(void)
 {
 	return;
 }
 
-#endif /* MODULE */
 #else /* CONFIG_INET */
 
 
@@ -766,3 +763,6 @@ EXPORT_SYMBOL(slhc_toss);
 
 #endif /* CONFIG_INET */
 MODULE_LICENSE("Dual BSD/GPL");
+module_init(slhc_init_module)
+module_exit(slhc_cleanup_module)
+
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/smc9194.c linux-2.6.12-rc5-kj/drivers/net/smc9194.c
--- vanilla-2.6.12-rc5-kj/drivers/net/smc9194.c	2005-03-02 08:38:17.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/smc9194.c	2005-05-28 00:11:23.000000000 +0200
@@ -1595,8 +1595,6 @@ static void smc_set_multicast_list(struc
 	}
 }
 
-#ifdef MODULE
-
 static struct net_device *devSMC9194;
 MODULE_LICENSE("GPL");
 
@@ -1607,7 +1605,7 @@ MODULE_PARM_DESC(io, "SMC 99194 I/O base
 MODULE_PARM_DESC(irq, "SMC 99194 IRQ number");
 MODULE_PARM_DESC(ifport, "SMC 99194 interface port (0-default, 1-TP, 2-AUI)");
 
-int init_module(void)
+static int __init smc_init_module(void)
 {
 	if (io == 0)
 		printk(KERN_WARNING
@@ -1620,7 +1618,7 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit smc_cleanup_module(void)
 {
 	unregister_netdev(devSMC9194);
 	free_irq(devSMC9194->irq, devSMC9194);
@@ -1628,4 +1626,5 @@ void cleanup_module(void)
 	free_netdev(devSMC9194);
 }
 
-#endif /* MODULE */
+module_init(smc_init_module)
+module_exit(smc_cleanup_module)
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/smc-ultra32.c linux-2.6.12-rc5-kj/drivers/net/smc-ultra32.c
--- vanilla-2.6.12-rc5-kj/drivers/net/smc-ultra32.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/smc-ultra32.c	2005-05-27 23:05:28.000000000 +0200
@@ -413,15 +413,14 @@ static void ultra32_block_output(struct 
 
 	memcpy_toio(xfer_start, buf, count);
 }
-\f
-#ifdef MODULE
+
 #define MAX_ULTRA32_CARDS   4	/* Max number of Ultra cards per module */
 static struct net_device *dev_ultra[MAX_ULTRA32_CARDS];
 
 MODULE_DESCRIPTION("SMC Ultra32 EISA ethernet driver");
 MODULE_LICENSE("GPL");
 
-int init_module(void)
+static int __init ultra32_init_module(void)
 {
 	int this_dev, found = 0;
 
@@ -437,7 +436,7 @@ int init_module(void)
 	return -ENXIO;
 }
 
-void cleanup_module(void)
+static void __exit ultra32_cleanup_module(void)
 {
 	int this_dev;
 
@@ -450,5 +449,7 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif /* MODULE */
+
+module_init(ultra32_init_module)
+module_exit(ultra32_cleanup_module)
 
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/sun3lance.c linux-2.6.12-rc5-kj/drivers/net/sun3lance.c
--- vanilla-2.6.12-rc5-kj/drivers/net/sun3lance.c	2005-03-02 08:38:25.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/sun3lance.c	2005-05-28 00:05:55.000000000 +0200
@@ -940,11 +940,9 @@ static void set_multicast_list( struct n
 }
 
 
-#ifdef MODULE
-
 static struct net_device *sun3lance_dev;
 
-int init_module(void)
+static int __init lance_init_module(void)
 {
 	sun3lance_dev = sun3lance_probe(-1);
 	if (IS_ERR(sun3lance_dev))
@@ -952,7 +950,7 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit lance_cleanup_module(void)
 {
 	unregister_netdev(sun3lance_dev);
 #ifdef CONFIG_SUN3
@@ -961,5 +959,6 @@ void cleanup_module(void)
 	free_netdev(sun3lance_dev);
 }
 
-#endif /* MODULE */
+module_init(lance_init_module)
+module_exit(lance_exit_module)
 
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/tokenring/proteon.c linux-2.6.12-rc5-kj/drivers/net/tokenring/proteon.c
--- vanilla-2.6.12-rc5-kj/drivers/net/tokenring/proteon.c	2005-03-02 08:38:26.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/tokenring/proteon.c	2005-05-28 00:58:22.000000000 +0200
@@ -352,13 +352,11 @@ static int proteon_open(struct net_devic
 	return tms380tr_open(dev);
 }
 
-#ifdef MODULE
-
 #define ISATR_MAX_ADAPTERS 3
 
-static int io[ISATR_MAX_ADAPTERS];
-static int irq[ISATR_MAX_ADAPTERS];
-static int dma[ISATR_MAX_ADAPTERS];
+static int io[ISATR_MAX_ADAPTERS] __initdata;
+static int irq[ISATR_MAX_ADAPTERS] __initdata;
+static int dma[ISATR_MAX_ADAPTERS] __initdata;
 
 MODULE_LICENSE("GPL");
 
@@ -368,7 +366,7 @@ module_param_array(dma, int, NULL, 0);
 
 static struct net_device *proteon_dev[ISATR_MAX_ADAPTERS];
 
-int init_module(void)
+static int __init proteon_init_module(void)
 {
 	struct net_device *dev;
 	int i, num = 0, err = 0;
@@ -399,7 +397,7 @@ int init_module(void)
 	return (0);
 }
 
-void cleanup_module(void)
+static void __exit proteon_cleanup_module(void)
 {
 	int i;
 
@@ -417,7 +415,8 @@ void cleanup_module(void)
 		free_netdev(dev);
 	}
 }
-#endif /* MODULE */
+module_init(proteon_init_module)
+module_exit(proteon_cleanup_module)
 
 \f
 /*
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/tokenring/skisa.c linux-2.6.12-rc5-kj/drivers/net/tokenring/skisa.c
--- vanilla-2.6.12-rc5-kj/drivers/net/tokenring/skisa.c	2005-03-02 08:37:48.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/tokenring/skisa.c	2005-05-28 01:04:53.000000000 +0200
@@ -361,13 +361,11 @@ static int sk_isa_open(struct net_device
 	return tms380tr_open(dev);
 }
 
-#ifdef MODULE
-
 #define ISATR_MAX_ADAPTERS 3
 
-static int io[ISATR_MAX_ADAPTERS];
-static int irq[ISATR_MAX_ADAPTERS];
-static int dma[ISATR_MAX_ADAPTERS];
+static int io[ISATR_MAX_ADAPTERS] __initdata;
+static int irq[ISATR_MAX_ADAPTERS] __initdata;
+static int dma[ISATR_MAX_ADAPTERS] __initdata;
 
 MODULE_LICENSE("GPL");
 
@@ -377,7 +375,7 @@ module_param_array(dma, int, NULL, 0);
 
 static struct net_device *sk_isa_dev[ISATR_MAX_ADAPTERS];
 
-int init_module(void)
+static int __init sk_isa_init_module(void)
 {
 	struct net_device *dev;
 	int i, num = 0, err = 0;
@@ -409,7 +407,7 @@ int init_module(void)
 	return (0);
 }
 
-void cleanup_module(void)
+static void __exit sk_isa_cleanup_module(void)
 {
 	int i;
 
@@ -427,8 +425,9 @@ void cleanup_module(void)
 		free_netdev(dev);
 	}
 }
-#endif /* MODULE */
 
+module_init(sk_isa_init_module)
+module_exit(sk_isa_cleanup_module)
 \f
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/tokenring/smctr.c linux-2.6.12-rc5-kj/drivers/net/tokenring/smctr.c
--- vanilla-2.6.12-rc5-kj/drivers/net/tokenring/smctr.c	2005-03-02 08:38:09.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/tokenring/smctr.c	2005-05-28 01:03:29.000000000 +0200
@@ -5655,11 +5655,9 @@ static int smctr_wait_while_cbusy(struct
                 return (HARDWARE_FAILED);
 }
 
-#ifdef MODULE
-
 static struct net_device* dev_smctr[SMCTR_MAX_ADAPTERS];
-static int io[SMCTR_MAX_ADAPTERS];
-static int irq[SMCTR_MAX_ADAPTERS];
+static int io[SMCTR_MAX_ADAPTERS] __initdata;
+static int irq[SMCTR_MAX_ADAPTERS] __initdata;
 
 MODULE_LICENSE("GPL");
 
@@ -5667,7 +5665,7 @@ module_param_array(io, int, NULL, 0);
 module_param_array(irq, int, NULL, 0);
 module_param(ringspeed, int, 0);
 
-static struct net_device *setup_card(int n)
+static struct net_device * __init setup_card(int n)
 {
 	struct net_device *dev = alloc_trdev(sizeof(struct net_local));
 	int err;
@@ -5699,7 +5697,7 @@ out:
 }
 			
 
-int init_module(void)
+static int __init smctr_init_module(void)
 {
         int i, found = 0;
 	struct net_device *dev;
@@ -5715,7 +5713,7 @@ int init_module(void)
         return found ? 0 : -ENODEV;
 }
 
-void cleanup_module(void)
+static void __exit smctr_cleanup_module(void)
 {
         int i;
 
@@ -5739,4 +5737,5 @@ void cleanup_module(void)
 		}
         }
 }
-#endif /* MODULE */
+module_init(smctr_init_module)
+module_exit(smctr_cleanup_module)
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/tokenring/tms380tr.c linux-2.6.12-rc5-kj/drivers/net/tokenring/tms380tr.c
--- vanilla-2.6.12-rc5-kj/drivers/net/tokenring/tms380tr.c	2005-05-28 00:28:08.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/tokenring/tms380tr.c	2005-05-28 00:56:50.000000000 +0200
@@ -2370,8 +2370,6 @@ int tmsdev_init(struct net_device *dev, 
 	return 0;
 }
 
-#ifdef MODULE
-
 EXPORT_SYMBOL(tms380tr_open);
 EXPORT_SYMBOL(tms380tr_close);
 EXPORT_SYMBOL(tms380tr_interrupt);
@@ -2381,7 +2379,7 @@ EXPORT_SYMBOL(tms380tr_wait);
 
 struct module *TMS380_module = NULL;
 
-int init_module(void)
+static int __init tms380_init_module(void)
 {
 	printk(KERN_DEBUG "%s", version);
 	
@@ -2389,13 +2387,14 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit tms380_cleanup_module(void)
 {
 	TMS380_module = NULL;
 }
-#endif
 
 MODULE_LICENSE("GPL");
+module_init(tms380_init_module)
+module_exit(tms380_cleanup_module)
 
 \f
 /*
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/wan/hostess_sv11.c linux-2.6.12-rc5-kj/drivers/net/wan/hostess_sv11.c
--- vanilla-2.6.12-rc5-kj/drivers/net/wan/hostess_sv11.c	2005-03-02 08:38:13.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/wan/hostess_sv11.c	2005-05-28 01:06:49.000000000 +0200
@@ -383,10 +383,8 @@ static void sv11_shutdown(struct sv11_de
 	kfree(dev);
 }
 
-#ifdef MODULE
-
-static int io=0x200;
-static int irq=9;
+static int io __initdata = 0x200;
+static int irq __initdata = 9;
 
 module_param(io, int, 0);
 MODULE_PARM_DESC(io, "The I/O base of the Comtrol Hostess SV11 card");
@@ -401,7 +399,7 @@ MODULE_DESCRIPTION("Modular driver for t
 
 static struct sv11_device *sv11_unit;
 
-int init_module(void)
+static int __init sv11_init_module(void)
 {
 	printk(KERN_INFO "SV-11 Z85230 Synchronous Driver v 0.03.\n");
 	printk(KERN_INFO "(c) Copyright 2001, Red Hat Inc.\n");	
@@ -410,11 +408,11 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit sv11_cleanup_module(void)
 {
 	if(sv11_unit)
 		sv11_shutdown(sv11_unit);
 }
 
-#endif
-
+module_init(sv11_init_module)
+module_exit(sv11_cleanup_module)
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/wireless/arlan-main.c linux-2.6.12-rc5-kj/drivers/net/wireless/arlan-main.c
--- vanilla-2.6.12-rc5-kj/drivers/net/wireless/arlan-main.c	2005-03-02 08:38:12.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/wireless/arlan-main.c	2005-05-28 01:12:36.000000000 +0200
@@ -1839,8 +1839,7 @@ struct net_device * __init arlan_probe(i
 	return dev;
 }
 
-#ifdef  MODULE
-int init_module(void)
+static int __init arlan_init_module(void)
 {
 	int i = 0;
 
@@ -1862,7 +1861,7 @@ int init_module(void)
 }
 
 
-void cleanup_module(void)
+static void __exit cleanup_module(void)
 {
 	int i = 0;
 	struct net_device *dev;
@@ -1891,6 +1890,6 @@ void cleanup_module(void)
 	ARLAN_DEBUG_EXIT("cleanup_module");
 }
 
-
-#endif
 MODULE_LICENSE("GPL");
+module_init(arlan_init_module)
+module_exit(arlan_cleanup_module)
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c linux-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c
--- vanilla-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c	2005-03-02 08:38:26.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c	2005-05-28 01:10:59.000000000 +0200
@@ -4308,13 +4308,12 @@ out:
  * Module entry point: insertion and removal
  */
 
-#ifdef	MODULE
 /*------------------------------------------------------------------*/
 /*
  * Insertion of the module
  * I'm now quite proud of the multi-device support.
  */
-int init_module(void)
+static int __init wavelan_init_module(void)
 {
 	int ret = -EIO;		/* Return error if no cards found */
 	int i;
@@ -4378,7 +4377,7 @@ int init_module(void)
 /*
  * Removal of the module
  */
-void cleanup_module(void)
+static void __exit wavelan_cleanup_module(void)
 {
 #ifdef DEBUG_MODULE_TRACE
 	printk(KERN_DEBUG "-> cleanup_module()\n");
@@ -4405,8 +4404,9 @@ void cleanup_module(void)
 	printk(KERN_DEBUG "<- cleanup_module()\n");
 #endif
 }
-#endif				/* MODULE */
 MODULE_LICENSE("GPL");
+module_init(wavelan_init_module)
+module_exit(wavelan_cleanup_module)
 
 /*
  * This software may only be used and distributed

[-- Attachment #3: Type: text/plain, Size: 167 bytes --]

_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
http://lists.osdl.org/mailman/listinfo/kernel-janitors

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [KJ] init_module / cleanup_module cleanup
  2005-05-28 10:50 [KJ] init_module / cleanup_module cleanup Reiner Herrmann
@ 2005-05-28 13:13 ` Domen Puncer
  2005-05-28 18:20 ` randy_dunlap
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Domen Puncer @ 2005-05-28 13:13 UTC (permalink / raw)
  To: kernel-janitors

[-- Attachment #1: Type: text/plain, Size: 1420 bytes --]

On 28/05/05 12:50 +0200, Reiner Herrmann wrote:
> Hi!
> 
> This is my first kernel patch, so I did a rather simple cleanup.
> Some network-drivers still used the old
> init_module() / cleanup_module() way of de-/registering
> at the kernel.

Hi Reiner.

Nice, you got tabs and linewraps right the first time.
Still, some issues and nitpicks:

Missing "Signed-off-by:";
Patch should probably be split per dir (diffsplit -d) and if some patch
touches >1 file of a driver, per driver.
Also, diffstat -p1 when patching multiple files is great.
(http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt is a nice
 read).

> 
> diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c linux-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c
> --- vanilla-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c	2005-03-02 08:38:26.000000000 +0100
> +++ linux-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c	2005-05-28 01:10:59.000000000 +0200

This one (and probably some others) won't compile on !MODULE, because
it includes wavelan.p.h with variables only defined on MODULE.

An ugly hack i used to quickly compile test it:
	egrep "^--- " ~/netdrivers_module_cleanup.diff | cut -f2 -d' '| cut -f1 | cut -f2- -d'/' | sed 's/.c$/.o/g' | xargs -n1 make 2>&1

Btw. anyone knows how to make ie.
"make CFLAGS=-DMODULE drivers/net/3c59x.o" work?

Also, when playing with __init and __exit, "make namespacecheck" can
catch some errors.


	Domen

[-- Attachment #2: Type: text/plain, Size: 167 bytes --]

_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
http://lists.osdl.org/mailman/listinfo/kernel-janitors

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [KJ] init_module / cleanup_module cleanup
  2005-05-28 10:50 [KJ] init_module / cleanup_module cleanup Reiner Herrmann
  2005-05-28 13:13 ` Domen Puncer
@ 2005-05-28 18:20 ` randy_dunlap
  2005-05-29 13:42 ` Reiner Herrmann
  2005-06-19 19:50 ` Domen Puncer
  3 siblings, 0 replies; 5+ messages in thread
From: randy_dunlap @ 2005-05-28 18:20 UTC (permalink / raw)
  To: kernel-janitors

[-- Attachment #1: Type: text/plain, Size: 1692 bytes --]

On Sat, 28 May 2005 15:13:04 +0200 Domen Puncer wrote:

| On 28/05/05 12:50 +0200, Reiner Herrmann wrote:
| > Hi!
| > 
| > This is my first kernel patch, so I did a rather simple cleanup.
| > Some network-drivers still used the old
| > init_module() / cleanup_module() way of de-/registering
| > at the kernel.
| 
| Hi Reiner.
| 
| Nice, you got tabs and linewraps right the first time.
| Still, some issues and nitpicks:
| 
| Missing "Signed-off-by:";
| Patch should probably be split per dir (diffsplit -d) and if some patch
| touches >1 file of a driver, per driver.
| Also, diffstat -p1 when patching multiple files is great.
| (http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt is a nice
|  read).
| 
| > 
| > diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c linux-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c
| > --- vanilla-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c	2005-03-02 08:38:26.000000000 +0100
| > +++ linux-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c	2005-05-28 01:10:59.000000000 +0200
| 
| This one (and probably some others) won't compile on !MODULE, because
| it includes wavelan.p.h with variables only defined on MODULE.
| 
| An ugly hack i used to quickly compile test it:
| 	egrep "^--- " ~/netdrivers_module_cleanup.diff | cut -f2 -d' '| cut -f1 | cut -f2- -d'/' | sed 's/.c$/.o/g' | xargs -n1 make 2>&1
| 
| Btw. anyone knows how to make ie.
| "make CFLAGS=-DMODULE drivers/net/3c59x.o" work?

AFAIK, you need CONFIG_VORTEX=m in .conifg and then do:

rm drivers/net/3c59x*o

make modules SUBDIRS=drivers/net
or
make drivers/net/3c59x.o

| Also, when playing with __init and __exit, "make namespacecheck" can
| catch some errors.

---
~Randy

[-- Attachment #2: Type: text/plain, Size: 167 bytes --]

_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
http://lists.osdl.org/mailman/listinfo/kernel-janitors

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [KJ] init_module / cleanup_module cleanup
  2005-05-28 10:50 [KJ] init_module / cleanup_module cleanup Reiner Herrmann
  2005-05-28 13:13 ` Domen Puncer
  2005-05-28 18:20 ` randy_dunlap
@ 2005-05-29 13:42 ` Reiner Herrmann
  2005-06-19 19:50 ` Domen Puncer
  3 siblings, 0 replies; 5+ messages in thread
From: Reiner Herrmann @ 2005-05-29 13:42 UTC (permalink / raw)
  To: kernel-janitors

[-- Attachment #1: Type: text/plain, Size: 3831 bytes --]

Domen Puncer wrote:
> Missing "Signed-off-by:";
> Patch should probably be split per dir (diffsplit -d) and if some patch
> touches >1 file of a driver, per driver.
In my opinion in this case it is OK, if there is only one patch,
because I did only a single logical change to these files.

> Also, diffstat -p1 when patching multiple files is great.
> (http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt is a nice
>  read).
Thank you for the hint. I'll use this tool from now on.

>>diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c linux-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c
>>--- vanilla-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c	2005-03-02 08:38:26.000000000 +0100
>>+++ linux-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c	2005-05-28 01:10:59.000000000 +0200
> 
> 
> This one (and probably some others) won't compile on !MODULE, because
> it includes wavelan.p.h with variables only defined on MODULE.
> 
> An ugly hack i used to quickly compile test it:
> 	egrep "^--- " ~/netdrivers_module_cleanup.diff | cut -f2 -d' '| cut -f1 | cut -f2- -d'/' | sed 's/.c$/.o/g' | xargs -n1 make 2>&1

The appended patch should now be correct.

Signed-off-by: Reiner Herrmann <reiner@reiner-h.de>

---
So here are the statistics:

 drivers/net/3c501.c               |   13 ++++++-------
 drivers/net/3c507.c               |   11 +++++------
 drivers/net/3c523.c               |   13 ++++++-------
 drivers/net/3c527.c               |   13 ++++++-------
 drivers/net/82596.c               |   16 ++++++++--------
 drivers/net/8390.c                |   10 +++++-----
 drivers/net/apne.c                |   10 +++++-----
 drivers/net/appletalk/cops.c      |    8 ++++----
 drivers/net/arcnet/capmode.c      |   10 ++++------
 drivers/net/arcnet/com20020.c     |   10 +++++-----
 drivers/net/at1700.c              |   10 ++++------
 drivers/net/atari_bionet.c        |   11 +++++------
 drivers/net/atari_pamsnet.c       |   10 ++++------
 drivers/net/atarilance.c          |   10 ++++------
 drivers/net/de620.c               |   11 ++++++-----
 drivers/net/dgrs.c                |    7 ++++++-
 drivers/net/eexpress.c            |   14 +++++++-------
 drivers/net/eth16i.c              |   18 +++++++++---------
 drivers/net/fmv18x.c              |   10 +++++-----
 drivers/net/ibmlana.c             |   15 ++++++++-------
 drivers/net/isa-skeleton.c        |   20 ++++++++------------
 drivers/net/lance.c               |   16 ++++++++--------
 drivers/net/lne390.c              |   15 ++++++++-------
 drivers/net/mac8390.c             |    8 ++++----
 drivers/net/mac89x0.c             |   16 ++++++++--------
 drivers/net/mvme147.c             |    8 ++++----
 drivers/net/ne-h8300.c            |   17 +++++++++--------
 drivers/net/ne.c                  |   17 +++++++++--------
 drivers/net/ne2.c                 |   16 +++++++++-------
 drivers/net/ni5010.c              |    8 ++++----
 drivers/net/ni52.c                |    8 ++++----
 drivers/net/ni65.c                |    8 ++++----
 drivers/net/seeq8005.c            |   11 +++++------
 drivers/net/sk_mca.c              |   10 ++++++----
 drivers/net/slhc.c                |   10 +++++-----
 drivers/net/smc-ultra32.c         |   11 ++++++-----
 drivers/net/smc9194.c             |    9 ++++-----
 drivers/net/sun3lance.c           |    9 ++++-----
 drivers/net/tokenring/proteon.c   |   15 +++++++--------
 drivers/net/tokenring/skisa.c     |   15 +++++++--------
 drivers/net/tokenring/smctr.c     |   15 +++++++--------
 drivers/net/tokenring/tms380tr.c  |   17 +++++------------
 drivers/net/wan/hostess_sv11.c    |   14 ++++++--------
 drivers/net/wireless/arlan-main.c |    9 ++++-----
 drivers/net/wireless/wavelan.c    |    8 ++++----
 drivers/net/wireless/wavelan.p.h  |    8 +++-----
 46 files changed, 264 insertions(+), 284 deletions(-)

[-- Attachment #2: netdrivers_module_cleanup.diff --]
[-- Type: text/x-patch, Size: 54031 bytes --]

diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/3c501.c linux-2.6.12-rc5-kj/drivers/net/3c501.c
--- vanilla-2.6.12-rc5-kj/drivers/net/3c501.c	2005-03-02 08:37:30.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/3c501.c	2005-05-28 01:09:05.000000000 +0200
@@ -888,8 +888,6 @@ static struct ethtool_ops netdev_ethtool
 	.set_msglevel		= netdev_set_msglevel,
 };
 
-#ifdef MODULE
-
 static struct net_device *dev_3c501;
 
 module_param(io, int, 0);
@@ -898,7 +896,7 @@ MODULE_PARM_DESC(io, "EtherLink I/O base
 MODULE_PARM_DESC(irq, "EtherLink IRQ number");
 
 /**
- * init_module:
+ * el_init_module:
  *
  * When the driver is loaded as a module this function is called. We fake up
  * a device structure with the base I/O and interrupt set as if it were being
@@ -909,7 +907,7 @@ MODULE_PARM_DESC(irq, "EtherLink IRQ num
  * here also causes the module to be unloaded
  */
  
-int init_module(void)
+static int __init el_init_module(void)
 {
 	dev_3c501 = el1_probe(-1);
 	if (IS_ERR(dev_3c501))
@@ -918,13 +916,13 @@ int init_module(void)
 }
 
 /**
- * cleanup_module:
+ * el_cleanup_module:
  * 
  * The module is being unloaded. We unhook our network device from the system
  * and then free up the resources we took when the card was found.
  */
  
-void cleanup_module(void)
+static void __exit el_cleanup_module(void)
 {
 	struct net_device *dev = dev_3c501;
 	unregister_netdev(dev);
@@ -932,7 +930,8 @@ void cleanup_module(void)
 	free_netdev(dev);
 }
 
-#endif /* MODULE */
+module_init(el_init_module)
+module_exit(el_cleanup_module)
 
 MODULE_AUTHOR("Donald Becker, Alan Cox");
 MODULE_DESCRIPTION("Support for the ancient 3Com 3c501 ethernet card");
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/3c507.c linux-2.6.12-rc5-kj/drivers/net/3c507.c
--- vanilla-2.6.12-rc5-kj/drivers/net/3c507.c	2005-03-02 08:38:17.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/3c507.c	2005-05-28 00:09:39.000000000 +0200
@@ -925,14 +925,13 @@ static struct ethtool_ops netdev_ethtool
 	.set_msglevel		= netdev_set_msglevel,
 };
 
-#ifdef MODULE
 static struct net_device *dev_3c507;
 module_param(io, int, 0);
 module_param(irq, int, 0);
 MODULE_PARM_DESC(io, "EtherLink16 I/O base address");
 MODULE_PARM_DESC(irq, "(ignored)");
 
-int init_module(void)
+static int __init netdev_init_module(void)
 {
 	if (io == 0)
 		printk("3c507: You should not use auto-probing with insmod!\n");
@@ -940,8 +939,7 @@ int init_module(void)
 	return IS_ERR(dev_3c507) ? PTR_ERR(dev_3c507) : 0;
 }
 
-void
-cleanup_module(void)
+static void __exit netdev_cleanup_module(void)
 {
 	struct net_device *dev = dev_3c507;
 	unregister_netdev(dev);
@@ -950,10 +948,11 @@ cleanup_module(void)
 	release_region(dev->base_addr, EL16_IO_EXTENT);
 	free_netdev(dev);
 }
-#endif /* MODULE */
+
 MODULE_LICENSE("GPL");
+module_init(netdev_init_module)
+module_exit(netdev_cleanup_module)
 
-\f
 /*
  * Local variables:
  *  compile-command: "gcc -D__KERNEL__ -I/usr/src/linux/net/inet -I/usr/src/linux/drivers/net -Wall -Wstrict-prototypes -O6 -m486 -c 3c507.c"
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/3c523.c linux-2.6.12-rc5-kj/drivers/net/3c523.c
--- vanilla-2.6.12-rc5-kj/drivers/net/3c523.c	2005-03-02 08:38:38.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/3c523.c	2005-05-29 00:52:33.000000000 +0200
@@ -1263,20 +1263,18 @@ static struct ethtool_ops netdev_ethtool
 	.get_drvinfo		= netdev_get_drvinfo,
 };
 
-#ifdef MODULE
-
 /* Increase if needed ;) */
 #define MAX_3C523_CARDS 4
 
 static struct net_device *dev_elmc[MAX_3C523_CARDS];
-static int irq[MAX_3C523_CARDS];
-static int io[MAX_3C523_CARDS];
+static int irq[MAX_3C523_CARDS] __initdata;
+static int io[MAX_3C523_CARDS] __initdata;
 module_param_array(irq, int, NULL, 0);
 module_param_array(io, int, NULL, 0);
 MODULE_PARM_DESC(io, "EtherLink/MC I/O base address(es)");
 MODULE_PARM_DESC(irq, "EtherLink/MC IRQ number(s)");
 
-int init_module(void)
+static int __init netdev_init_module(void)
 {
 	int this_dev,found = 0;
 
@@ -1307,7 +1305,7 @@ int init_module(void)
 	} else return 0;
 }
 
-void cleanup_module(void)
+static void __exit netdev_cleanup_module(void)
 {
 	int this_dev;
 	for (this_dev=0; this_dev<MAX_3C523_CARDS; this_dev++) {
@@ -1320,4 +1318,5 @@ void cleanup_module(void)
 	}
 }
 
-#endif				/* MODULE */
+module_init(netdev_init_module)
+module_exit(netdev_cleanup_module)
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/3c527.c linux-2.6.12-rc5-kj/drivers/net/3c527.c
--- vanilla-2.6.12-rc5-kj/drivers/net/3c527.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/3c527.c	2005-05-29 00:51:38.000000000 +0200
@@ -1634,19 +1634,17 @@ static struct ethtool_ops netdev_ethtool
 	.set_msglevel		= netdev_set_msglevel,
 };
 
-#ifdef MODULE
-
 static struct net_device *this_device;
 
 /**
- *	init_module		-	entry point
+ *	netdev_init_module		-	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_module(void)
+static int __init netdev_init_module(void)
 {
 	this_device = mc32_probe(-1);
 	if (IS_ERR(this_device))
@@ -1655,7 +1653,7 @@ int init_module(void)
 }
 
 /**
- *	cleanup_module	-	free resources for an unload
+ *	netdev_cleanup_module	-	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
@@ -1665,11 +1663,12 @@ int init_module(void)
  *	transmit operations are allowed to start scribbling into memory.
  */
 
-void cleanup_module(void)
+static void __exit netdev_cleanup_module(void)
 {
 	unregister_netdev(this_device);
 	cleanup_card(this_device);
 	free_netdev(this_device);
 }
 
-#endif /* MODULE */
+module_init(netdev_init_module)
+module_exit(netdev_cleanup_module)
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/82596.c linux-2.6.12-rc5-kj/drivers/net/82596.c
--- vanilla-2.6.12-rc5-kj/drivers/net/82596.c	2005-03-02 08:38:13.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/82596.c	2005-05-28 00:16:42.000000000 +0200
@@ -1130,8 +1130,8 @@ static void print_eth(unsigned char *add
 	printk(" %02X%02X, %s\n", add[12], add[13], str);
 }
 
-static int io = 0x300;
-static int irq = 10;
+static int io __initdata = 0x300;
+static int irq __initdata = 10;
 
 struct net_device * __init i82596_probe(int unit)
 {
@@ -1568,7 +1568,6 @@ static void set_multicast_list(struct ne
 	}
 }
 
-#ifdef MODULE
 static struct net_device *dev_82596;
 
 #ifdef ENABLE_APRICOT
@@ -1576,11 +1575,11 @@ module_param(irq, int, 0);
 MODULE_PARM_DESC(irq, "Apricot IRQ number");
 #endif
 
-static int debug = -1;
+static int debug __initdata = -1;
 module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "i82596 debug mask");
 
-int init_module(void)
+static int __init i596_init_module(void)
 {
 	if (debug >= 0)
 		i596_debug = debug;
@@ -1590,7 +1589,7 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit i596_cleanup_module(void)
 {
 	unregister_netdev(dev_82596);
 #ifdef __mc68000__
@@ -1609,8 +1608,9 @@ void cleanup_module(void)
 	free_netdev(dev_82596);
 }
 
-#endif				/* MODULE */
-\f
+module_init(i596_init_module)
+module_exit(i596_cleanup_module)
+
 /*
  * Local variables:
  *  compile-command: "gcc -D__KERNEL__ -I/usr/src/linux/net/inet -Wall -Wstrict-prototypes -O6 -m486 -c 82596.c"
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/8390.c linux-2.6.12-rc5-kj/drivers/net/8390.c
--- vanilla-2.6.12-rc5-kj/drivers/net/8390.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/8390.c	2005-05-27 23:47:17.000000000 +0200
@@ -1115,16 +1115,16 @@ EXPORT_SYMBOL(ei_poll);
 EXPORT_SYMBOL(NS8390_init);
 EXPORT_SYMBOL(__alloc_ei_netdev);
 
-#if defined(MODULE)
-
-int init_module(void)
+static int __init NS8390_init_module(void)
 {
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit NS8390_cleanup_module(void)
 {
 }
 
-#endif /* MODULE */
+module_init(NS8390_init_module)
+module_exit(NS8390_cleanup_module)
+
 MODULE_LICENSE("GPL");
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/apne.c linux-2.6.12-rc5-kj/drivers/net/apne.c
--- vanilla-2.6.12-rc5-kj/drivers/net/apne.c	2005-05-28 00:28:08.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/apne.c	2005-05-27 23:02:38.000000000 +0200
@@ -565,10 +565,9 @@ static irqreturn_t apne_interrupt(int ir
     return IRQ_HANDLED;
 }
 
-#ifdef MODULE
 static struct net_device *apne_dev;
 
-int init_module(void)
+static int __init apne_init_module(void)
 {
 	apne_dev = apne_probe(-1);
 	if (IS_ERR(apne_dev))
@@ -576,7 +575,7 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit apne_cleanup_module(void)
 {
 	unregister_netdev(apne_dev);
 
@@ -591,8 +590,6 @@ void cleanup_module(void)
 	free_netdev(apne_dev);
 }
 
-#endif
-
 static int init_pcmcia(void)
 {
 	u_char config;
@@ -636,3 +633,6 @@ static int init_pcmcia(void)
 }
 
 MODULE_LICENSE("GPL");
+module_init(apne_init_module)
+module_exit(apne_cleanup_module)
+
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/appletalk/cops.c linux-2.6.12-rc5-kj/drivers/net/appletalk/cops.c
--- vanilla-2.6.12-rc5-kj/drivers/net/appletalk/cops.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/appletalk/cops.c	2005-05-28 00:54:43.000000000 +0200
@@ -1023,7 +1023,6 @@ static struct net_device_stats *cops_get
         return &lp->stats;
 }
 
-#ifdef MODULE
 static struct net_device *cops_dev;
 
 MODULE_LICENSE("GPL");
@@ -1031,7 +1030,7 @@ module_param(io, int, 0);
 module_param(irq, int, 0);
 module_param(board_type, int, 0);
 
-int init_module(void)
+static int __init cops_init_module(void)
 {
 	if (io == 0)
 		printk(KERN_WARNING "%s: You shouldn't autoprobe with insmod\n",
@@ -1042,13 +1041,14 @@ int init_module(void)
         return 0;
 }
 
-void cleanup_module(void)
+static void __exit cops_cleanup_module(void)
 {
 	unregister_netdev(cops_dev);
 	cleanup_card(cops_dev);
 	free_netdev(cops_dev);
 }
-#endif /* MODULE */
+module_init(cops_init_module)
+module_exit(cops_cleanup_module)
 
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/arcnet/capmode.c linux-2.6.12-rc5-kj/drivers/net/arcnet/capmode.c
--- vanilla-2.6.12-rc5-kj/drivers/net/arcnet/capmode.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/arcnet/capmode.c	2005-05-28 00:52:16.000000000 +0200
@@ -78,23 +78,21 @@ void arcnet_cap_init(void)
 }
 
 
-#ifdef MODULE
-
-int __init init_module(void)
+static int __init capmode_init_module(void)
 {
 	printk(VERSION);
 	arcnet_cap_init();
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit capmode_cleanup_module(void)
 {
 	arcnet_unregister_proto(&capmode_proto);
 }
 
 MODULE_LICENSE("GPL");
-#endif				/* MODULE */
-
+module_init(capmode_init_module)
+module_exit(capmode_cleanup_module)
 
 
 /* packet receiver */
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/arcnet/com20020.c linux-2.6.12-rc5-kj/drivers/net/arcnet/com20020.c
--- vanilla-2.6.12-rc5-kj/drivers/net/arcnet/com20020.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/arcnet/com20020.c	2005-05-28 00:50:10.000000000 +0200
@@ -337,21 +337,21 @@ static void com20020_set_mc_list(struct 
 	}
 }
 
-#ifdef MODULE
-
 EXPORT_SYMBOL(com20020_check);
 EXPORT_SYMBOL(com20020_found);
 
 MODULE_LICENSE("GPL");
 
-int init_module(void)
+static int __init com20020_init_module(void)
 {
 	BUGLVL(D_NORMAL) printk(VERSION);
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit com20020_cleanup_module(void)
 {
 }
 
-#endif				/* MODULE */
+module_init(com20020_init_module)
+module_exit(com20020_cleanup_module)
+
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/at1700.c linux-2.6.12-rc5-kj/drivers/net/at1700.c
--- vanilla-2.6.12-rc5-kj/drivers/net/at1700.c	2005-03-02 08:38:07.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/at1700.c	2005-05-28 00:37:35.000000000 +0200
@@ -896,7 +896,6 @@ set_rx_mode(struct net_device *dev)
 	return;
 }
 
-#ifdef MODULE
 static struct net_device *dev_at1700;
 
 module_param(io, int, 0);
@@ -906,7 +905,7 @@ MODULE_PARM_DESC(io, "AT1700/FMV18X I/O 
 MODULE_PARM_DESC(irq, "AT1700/FMV18X IRQ number");
 MODULE_PARM_DESC(net_debug, "AT1700/FMV18X debug level (0-6)");
 
-int init_module(void)
+static int __init at1700_init_module(void)
 {
 	if (io == 0)
 		printk("at1700: You should not use auto-probing with insmod!\n");
@@ -916,16 +915,15 @@ int init_module(void)
 	return 0;
 }
 
-void
-cleanup_module(void)
+static void __exit at1700_cleanup_module(void)
 {
 	unregister_netdev(dev_at1700);
 	cleanup_card(dev_at1700);
 	free_netdev(dev_at1700);
 }
-#endif /* MODULE */
 MODULE_LICENSE("GPL");
-
+module_init(at1700_init_module)
+module_exit(at1700_cleanup_module)
 \f
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/atari_bionet.c linux-2.6.12-rc5-kj/drivers/net/atari_bionet.c
--- vanilla-2.6.12-rc5-kj/drivers/net/atari_bionet.c	2005-03-02 08:38:10.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/atari_bionet.c	2005-05-28 00:17:42.000000000 +0200
@@ -642,12 +642,9 @@ static struct net_device_stats *net_get_
 	return &lp->stats;
 }
 
-
-#ifdef MODULE
-
 static struct net_device *bio_dev;
 
-int init_module(void)
+static int __init bionet_init_module(void)
 {
 	bio_dev = bionet_probe(-1);
 	if (IS_ERR(bio_dev))
@@ -655,13 +652,15 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit bionet_cleanup_module(void)
 {
 	unregister_netdev(bio_dev);
 	free_netdev(bio_dev);
 }
 
-#endif /* MODULE */
+module_init(bionet_init_module)
+module_exit(bionet_cleanup_module)
+
 
 /* Local variables:
  *  compile-command: "gcc -D__KERNEL__ -I/usr/src/linux/include
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/atarilance.c linux-2.6.12-rc5-kj/drivers/net/atarilance.c
--- vanilla-2.6.12-rc5-kj/drivers/net/atarilance.c	2005-03-02 08:38:37.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/atarilance.c	2005-05-28 00:01:09.000000000 +0200
@@ -1176,11 +1176,9 @@ static int lance_set_mac_address( struct
 	return( 0 );
 }
 
-\f
-#ifdef MODULE
 static struct net_device *atarilance_dev;
 
-int init_module(void)
+static int __init lance_init_module(void)
 {
 	atarilance_dev = atarilance_probe(-1);
 	if (IS_ERR(atarilance_dev))
@@ -1188,15 +1186,15 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit lance_cleanup_module(void)
 {
 	unregister_netdev(atarilance_dev);
 	free_irq(atarilance_dev->irq, atarilance_dev);
 	free_netdev(atarilance_dev);
 }
 
-#endif /* MODULE */
-\f
+module_init(lance_init_module)
+module_exit(lance_cleanup_module)
 
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/atari_pamsnet.c linux-2.6.12-rc5-kj/drivers/net/atari_pamsnet.c
--- vanilla-2.6.12-rc5-kj/drivers/net/atari_pamsnet.c	2005-03-02 08:37:55.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/atari_pamsnet.c	2005-05-28 00:41:44.000000000 +0200
@@ -863,12 +863,9 @@ static struct net_device_stats *net_get_
 	return &lp->stats;
 }
 
-
-#ifdef MODULE
-
 static struct net_device *pam_dev;
 
-int init_module(void)
+static int __init pamsnet_init_module(void)
 {
 	pam_dev = pamsnet_probe(-1);
 	if (IS_ERR(pam_dev))
@@ -876,13 +873,14 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit pamsnet_cleanup_module(void)
 {
 	unregister_netdev(pam_dev);
 	free_netdev(pam_dev);
 }
 
-#endif /* MODULE */
+module_init(pamsnet_init_module)
+module_exit(pamsnet_cleanup_module)
 
 /* Local variables:
  *  compile-command: "gcc -D__KERNEL__ -I/usr/src/linux/include
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/de620.c linux-2.6.12-rc5-kj/drivers/net/de620.c
--- vanilla-2.6.12-rc5-kj/drivers/net/de620.c	2005-03-02 08:38:09.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/de620.c	2005-05-28 00:25:19.000000000 +0200
@@ -1009,10 +1009,10 @@ static int __init read_eeprom(struct net
  * Loadable module skeleton
  *
  */
-#ifdef MODULE
+
 static struct net_device *de620_dev;
 
-int init_module(void)
+static int __init de620_init_module(void)
 {
 	de620_dev = de620_probe(-1);
 	if (IS_ERR(de620_dev))
@@ -1020,16 +1020,17 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit de620_cleanup_module(void)
 {
 	unregister_netdev(de620_dev);
 	release_region(de620_dev->base_addr, 3);
 	free_netdev(de620_dev);
 }
-#endif /* MODULE */
+
 MODULE_LICENSE("GPL");
+module_init(de620_init_module)
+module_exit(de620_cleanup_module)
 
-\f
 /*
  * (add '-DMODULE' when compiling as loadable module)
  *
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/dgrs.c linux-2.6.12-rc5-kj/drivers/net/dgrs.c
--- vanilla-2.6.12-rc5-kj/drivers/net/dgrs.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/dgrs.c	2005-05-29 14:38:02.000000000 +0200
@@ -1549,7 +1549,12 @@ MODULE_PARM_DESC(nicmode, "Digi RightSwi
 static int __init dgrs_init_module (void)
 {
 	int	i;
-	int eisacount = 0, pcicount = 0;
+#ifdef CONFIG_EISA
+	int eisacount = 0;
+#endif
+#ifdef CONFIG_PCI
+	int pcicount = 0;
+#endif
 
 	/*
 	 *	Command line variable overrides
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/eexpress.c linux-2.6.12-rc5-kj/drivers/net/eexpress.c
--- vanilla-2.6.12-rc5-kj/drivers/net/eexpress.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/eexpress.c	2005-05-27 23:27:55.000000000 +0200
@@ -1683,13 +1683,11 @@ eexp_set_multicast(struct net_device *de
  * MODULE stuff
  */
 
-#ifdef MODULE
-
 #define EEXP_MAX_CARDS     4    /* max number of cards to support */
 
 static struct net_device *dev_eexp[EEXP_MAX_CARDS];
-static int irq[EEXP_MAX_CARDS];
-static int io[EEXP_MAX_CARDS];
+static int irq[EEXP_MAX_CARDS] __initdata;
+static int io[EEXP_MAX_CARDS] __initdata;
 
 module_param_array(io, int, NULL, 0);
 module_param_array(irq, int, NULL, 0);
@@ -1702,7 +1700,7 @@ MODULE_LICENSE("GPL");
  * are specified, we verify and then use them.  If no parameters are given, we
  * autoprobe for one card only.
  */
-int init_module(void)
+static int __init eexp_init_module(void)
 {
 	struct net_device *dev;
 	int this_dev, found = 0;
@@ -1730,7 +1728,7 @@ int init_module(void)
 	return -ENXIO;
 }
 
-void cleanup_module(void)
+static void __exit eexp_cleanup_module(void)
 {
 	int this_dev;
 
@@ -1742,7 +1740,9 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif
+
+module_init(eexp_init_module)
+module_exit(eexp_cleanup_module)
 
 /*
  * Local Variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/eth16i.c linux-2.6.12-rc5-kj/drivers/net/eth16i.c
--- vanilla-2.6.12-rc5-kj/drivers/net/eth16i.c	2005-03-02 08:38:25.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/eth16i.c	2005-05-28 00:07:48.000000000 +0200
@@ -1386,8 +1386,6 @@ static void eth16i_select_regbank(unsign
 	outb( ((data & 0xF3) | ( (banknbr & 0x03) << 2)), ioaddr + CONFIG_REG_1); 
 }
 
-#ifdef MODULE
-
 static ushort eth16i_parse_mediatype(const char* s)
 {
 	if(!s)
@@ -1408,12 +1406,12 @@ static ushort eth16i_parse_mediatype(con
 #define MAX_ETH16I_CARDS 4  /* Max number of Eth16i cards per module */
 
 static struct net_device *dev_eth16i[MAX_ETH16I_CARDS];
-static int io[MAX_ETH16I_CARDS];
+static int io[MAX_ETH16I_CARDS] __initdata;
 #if 0
-static int irq[MAX_ETH16I_CARDS];
+static int irq[MAX_ETH16I_CARDS] __initdata;
 #endif
-static char* mediatype[MAX_ETH16I_CARDS];
-static int debug = -1;
+static char* mediatype[MAX_ETH16I_CARDS] __initdata;
+static int debug __initdata = -1;
 
 MODULE_AUTHOR("Mika Kuoppala <miku@iki.fi>");
 MODULE_DESCRIPTION("ICL EtherTeam 16i/32 driver");
@@ -1434,7 +1432,7 @@ MODULE_PARM_DESC(mediatype, "eth16i medi
 module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "eth16i debug level (0-6)");
 
-int init_module(void)
+static int __init eth16i_init_module(void)
 {
 	int this_dev, found = 0;
 	struct net_device *dev;
@@ -1479,7 +1477,7 @@ int init_module(void)
 	return -ENXIO;
 }
 	
-void cleanup_module(void)
+static void __exit eth16i_cleanup_module(void)
 {
 	int this_dev;
 
@@ -1494,7 +1492,9 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif /* MODULE */
+
+module_init(eth16i_init_module)
+module_exit(eth16i_cleanup_module)
 
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/fmv18x.c linux-2.6.12-rc5-kj/drivers/net/fmv18x.c
--- vanilla-2.6.12-rc5-kj/drivers/net/fmv18x.c	2005-03-02 08:37:48.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/fmv18x.c	2005-05-28 00:44:16.000000000 +0200
@@ -647,7 +647,6 @@ static void set_multicast_list(struct ne
 		outb(2, ioaddr + RX_MODE);	/* Disable promiscuous, use normal mode */
 }
 
-#ifdef MODULE
 static struct net_device *dev_fmv18x;
 
 MODULE_PARM(io, "i");
@@ -658,7 +657,7 @@ MODULE_PARM_DESC(irq, "FMV-18X IRQ numbe
 MODULE_PARM_DESC(net_debug, "FMV-18X debug level (0-1,5-6)");
 MODULE_LICENSE("GPL");
 
-int init_module(void)
+static int __init fmv18x_init_module(void)
 {
 	if (io == 0)
 		printk("fmv18x: You should not use auto-probing with insmod!\n");
@@ -668,15 +667,16 @@ int init_module(void)
 	return 0;
 }
 
-void
-cleanup_module(void)
+static void __exit fmv18x_cleanup_module(void)
 {
 	unregister_netdev(dev_fmv18x);
 	free_irq(dev_fmv18x->irq, dev_fmv18x);
 	release_region(dev_fmv18x->base_addr, FMV18X_IO_EXTENT);
 	free_netdev(dev_fmv18x);
 }
-#endif /* MODULE */
+
+module_init(fmv18x_init_module)
+module_exit(fmv18x_cleanup_module)
 \f
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/ibmlana.c linux-2.6.12-rc5-kj/drivers/net/ibmlana.c
--- vanilla-2.6.12-rc5-kj/drivers/net/ibmlana.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/ibmlana.c	2005-05-27 23:18:58.000000000 +0200
@@ -1015,13 +1015,11 @@ static int ibmlana_probe(struct net_devi
  * modularization support
  * ------------------------------------------------------------------------ */
 
-#ifdef MODULE
-
 #define DEVMAX 5
 
 static struct net_device *moddevs[DEVMAX];
-static int irq;
-static int io;
+static int irq __initdata;
+static int io __initdata;
 
 module_param(irq, int, 0);
 module_param(io, int, 0);
@@ -1029,7 +1027,7 @@ MODULE_PARM_DESC(irq, "IBM LAN/A IRQ num
 MODULE_PARM_DESC(io, "IBM LAN/A I/O base address");
 MODULE_LICENSE("GPL");
 
-int init_module(void)
+static int __init ibmlana_init_module(void)
 {
 	int z;
 
@@ -1059,7 +1057,7 @@ int init_module(void)
 	return (z > 0) ? 0 : -EIO;
 }
 
-void cleanup_module(void)
+static void __exit ibmlana_cleanup_module(void)
 {
 	int z;
 	for (z = 0; z < DEVMAX; z++) {
@@ -1077,4 +1075,7 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif				/* MODULE */
+
+module_init(ibmlana_init_module)
+module_exit(ibmlana_cleanup_module)
+
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/isa-skeleton.c linux-2.6.12-rc5-kj/drivers/net/isa-skeleton.c
--- vanilla-2.6.12-rc5-kj/drivers/net/isa-skeleton.c	2005-03-02 08:38:32.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/isa-skeleton.c	2005-05-29 00:58:04.000000000 +0200
@@ -161,7 +161,6 @@ static void cleanup_card(struct net_devi
 	release_region(dev->base_addr, NETCARD_IO_EXTENT);
 }
 
-#ifndef MODULE
 struct net_device * __init netcard_probe(int unit)
 {
 	struct net_device *dev = alloc_etherdev(sizeof(struct net_local));
@@ -186,7 +185,6 @@ out:
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
-#endif
 
 /*
  * This is the real probe routine. Linux has a history of friendly device
@@ -664,16 +662,14 @@ set_multicast_list(struct net_device *de
 		outw(0, ioaddr);
 }
 
-#ifdef MODULE
-
 static struct net_device *this_device;
-static int io = 0x300;
-static int irq;
-static int dma;
-static int mem;
+static int io __initdata = 0x300;
+static int irq __initdata;
+static int dma __initdata;
+static int mem __initdata;
 MODULE_LICENSE("GPL");
 
-int init_module(void)
+static int __init net_init_module(void)
 {
 	struct net_device *dev;
 	int result;
@@ -701,15 +697,15 @@ int init_module(void)
 	return -ENXIO;
 }
 
-void
-cleanup_module(void)
+static void __exit net_cleanup_module(void)
 {
 	unregister_netdev(this_device);
 	cleanup_card(this_device);
 	free_netdev(this_device);
 }
 
-#endif /* MODULE */
+module_init(net_init_module)
+module_exit(net_cleanup_module)
 
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/lance.c linux-2.6.12-rc5-kj/drivers/net/lance.c
--- vanilla-2.6.12-rc5-kj/drivers/net/lance.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/lance.c	2005-05-27 23:20:17.000000000 +0200
@@ -307,7 +307,6 @@ static struct net_device_stats *lance_ge
 static void set_multicast_list(struct net_device *dev);
 static void lance_tx_timeout (struct net_device *dev);
 
-\f
 
 static void cleanup_card(struct net_device *dev)
 {
@@ -320,13 +319,12 @@ static void cleanup_card(struct net_devi
 	kfree(lp);
 }
 
-#ifdef MODULE
 #define MAX_CARDS		8	/* Max number of interfaces (cards) per module */
 
 static struct net_device *dev_lance[MAX_CARDS];
-static int io[MAX_CARDS];
-static int dma[MAX_CARDS];
-static int irq[MAX_CARDS];
+static int io[MAX_CARDS] __initdata;
+static int dma[MAX_CARDS] __initdata;
+static int irq[MAX_CARDS] __initdata;
 
 module_param_array(io, int, NULL, 0);
 module_param_array(dma, int, NULL, 0);
@@ -337,7 +335,7 @@ MODULE_PARM_DESC(dma, "LANCE/PCnet ISA D
 MODULE_PARM_DESC(irq, "LANCE/PCnet IRQ number (ignored for some devices)");
 MODULE_PARM_DESC(lance_debug, "LANCE/PCnet debug level (0-7)");
 
-int init_module(void)
+static int __init lance_init_module(void)
 {
 	struct net_device *dev;
 	int this_dev, found = 0;
@@ -370,7 +368,7 @@ int init_module(void)
 	return -ENXIO;
 }
 
-void cleanup_module(void)
+static void __exit lance_cleanup_module(void)
 {
 	int this_dev;
 
@@ -383,8 +381,10 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif /* MODULE */
+
 MODULE_LICENSE("GPL");
+module_init(lance_init_module)
+module_exit(lance_cleanup_module)
 
 
 /* Starting in v2.1.*, the LANCE/PCnet probe is now similar to the other
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/lne390.c linux-2.6.12-rc5-kj/drivers/net/lne390.c
--- vanilla-2.6.12-rc5-kj/drivers/net/lne390.c	2005-03-02 08:38:26.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/lne390.c	2005-05-28 00:05:02.000000000 +0200
@@ -395,12 +395,11 @@ static int lne390_close(struct net_devic
 	return 0;
 }
 
-#ifdef MODULE
 #define MAX_LNE_CARDS	4	/* Max number of LNE390 cards per module */
 static struct net_device *dev_lne[MAX_LNE_CARDS];
-static int io[MAX_LNE_CARDS];
-static int irq[MAX_LNE_CARDS];
-static int mem[MAX_LNE_CARDS];
+static int io[MAX_LNE_CARDS] __initdata;
+static int irq[MAX_LNE_CARDS] __initdata;
+static int mem[MAX_LNE_CARDS] __initdata;
 
 module_param_array(io, int, NULL, 0);
 module_param_array(irq, int, NULL, 0);
@@ -411,7 +410,7 @@ MODULE_PARM_DESC(mem, "memory base addre
 MODULE_DESCRIPTION("Mylex LNE390A/B EISA Ethernet driver");
 MODULE_LICENSE("GPL");
 
-int init_module(void)
+static int __init lne390_init_module(void)
 {
 	struct net_device *dev;
 	int this_dev, found = 0;
@@ -441,7 +440,7 @@ int init_module(void)
 	return -ENXIO;
 }
 
-void cleanup_module(void)
+static void __exit lne390_cleanup_module(void)
 {
 	int this_dev;
 
@@ -454,5 +453,7 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif /* MODULE */
+
+module_init(lne390_init_module)
+module_exit(lne390_cleanup_module)
 
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/mac8390.c linux-2.6.12-rc5-kj/drivers/net/mac8390.c
--- vanilla-2.6.12-rc5-kj/drivers/net/mac8390.c	2005-03-02 08:38:10.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/mac8390.c	2005-05-28 00:22:15.000000000 +0200
@@ -374,14 +374,13 @@ out:
 	return ERR_PTR(err);
 }
 
-#ifdef MODULE
 MODULE_AUTHOR("David Huggins-Daines <dhd@debian.org> and others");
 MODULE_DESCRIPTION("Macintosh NS8390-based Nubus Ethernet driver");
 MODULE_LICENSE("GPL");
 
 /* overkill, of course */
 static struct net_device *dev_mac8390[15];
-int init_module(void)
+static int __init mac8390_init_module(void)
 {
 	int i;
 	for (i = 0; i < 15; i++) {
@@ -397,7 +396,7 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit mac8390_cleanup_module(void)
 {
 	int i;
 	for (i = 0; i < 15; i++) {
@@ -409,7 +408,8 @@ void cleanup_module(void)
 	}
 }
 
-#endif /* MODULE */
+module_init(mac8390_init_module)
+module_exit(mac8390_cleanup_module)
 
 static int __init mac8390_initdev(struct net_device * dev, struct nubus_dev * ndev,
 			    enum mac8390_type type)
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/mac89x0.c linux-2.6.12-rc5-kj/drivers/net/mac89x0.c
--- vanilla-2.6.12-rc5-kj/drivers/net/mac89x0.c	2005-03-02 08:38:09.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/mac89x0.c	2005-05-28 00:31:01.000000000 +0200
@@ -624,17 +624,15 @@ static int set_mac_address(struct net_de
 	return 0;
 }
 
-#ifdef MODULE
-
 static struct net_device *dev_cs89x0;
-static int debug;
+static int debug __initdata;
 
 MODULE_PARM(debug, "i");
 MODULE_PARM_DESC(debug, "CS89[02]0 debug level (0-5)");
 MODULE_LICENSE("GPL");
 
-int
-init_module(void)
+static int __init
+mac90x0_init_module(void)
 {
 	net_debug = debug;
         dev_cs89x0 = mac89x0_probe(-1);
@@ -645,14 +643,16 @@ init_module(void)
 	return 0;
 }
 
-void
-cleanup_module(void)
+static void __exit
+mac90x0cleanup_module(void)
 {
 	unregister_netdev(dev_cs89x0);
 	nubus_writew(0, dev_cs89x0->base_addr + ADD_PORT);
 	free_netdev(dev_cs89x0);
 }
-#endif /* MODULE */
+
+module_init(mac90x0_init_module)
+module_exit(mac90x0_cleanup_module)
 \f
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/mvme147.c linux-2.6.12-rc5-kj/drivers/net/mvme147.c
--- vanilla-2.6.12-rc5-kj/drivers/net/mvme147.c	2005-03-02 08:38:00.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/mvme147.c	2005-05-28 00:39:22.000000000 +0200
@@ -180,11 +180,10 @@ static int m147lance_close(struct net_de
 	return 0;
 }
 
-#ifdef MODULE
 MODULE_LICENSE("GPL");
 
 static struct net_device *dev_mvme147_lance;
-int init_module(void)
+static int __init m147lance_init_module(void)
 {
 	dev_mvme147_lance = mvme147lance_probe(-1);
 	if (IS_ERR(dev_mvme147_lance))
@@ -192,7 +191,7 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit m147lance_cleanup_module(void)
 {
 	struct m147lance_private *lp = dev_mvme147_lance->priv;
 	unregister_netdev(dev_mvme147_lance);
@@ -200,4 +199,5 @@ void cleanup_module(void)
 	free_netdev(dev_mvme147_lance);
 }
 
-#endif /* MODULE */
+module_init(m147lance_init_module)
+module_exit(m147lance_cleanup_module)
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/ne2.c linux-2.6.12-rc5-kj/drivers/net/ne2.c
--- vanilla-2.6.12-rc5-kj/drivers/net/ne2.c	2005-05-28 00:28:08.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/ne2.c	2005-05-27 23:25:46.000000000 +0200
@@ -769,12 +769,11 @@ retry:
 }
 
 
-#ifdef MODULE
 #define MAX_NE_CARDS	4	/* Max number of NE cards per module */
 static struct net_device *dev_ne[MAX_NE_CARDS];
-static int io[MAX_NE_CARDS];
-static int irq[MAX_NE_CARDS];
-static int bad[MAX_NE_CARDS];	/* 0xbad = bad sig or no reset ack */
+static int io[MAX_NE_CARDS] __initdata;
+static int irq[MAX_NE_CARDS] __initdata;
+static int bad[MAX_NE_CARDS] __initdata;	/* 0xbad = bad sig or no reset ack */
 MODULE_LICENSE("GPL");
 
 module_param_array(io, int, NULL, 0);
@@ -786,7 +785,7 @@ MODULE_PARM_DESC(bad, "(ignored)");
 
 /* Module code fixed by David Weinehall */
 
-int init_module(void)
+static int __init ne_init_module(void)
 {
 	struct net_device *dev;
 	int this_dev, found = 0;
@@ -814,7 +813,7 @@ int init_module(void)
 	return -ENXIO;
 }
 
-void cleanup_module(void)
+static void __exit ne_cleanup_module(void)
 {
 	int this_dev;
 
@@ -827,4 +826,7 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif /* MODULE */
+
+module_init(ne_init_module)
+module_exit(ne_cleanup_module)
+
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/ne.c linux-2.6.12-rc5-kj/drivers/net/ne.c
--- vanilla-2.6.12-rc5-kj/drivers/net/ne.c	2005-05-28 00:28:08.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/ne.c	2005-05-27 23:25:24.000000000 +0200
@@ -793,13 +793,11 @@ retry:
 	return;
 }
 
-\f
-#ifdef MODULE
 #define MAX_NE_CARDS	4	/* Max number of NE cards per module */
 static struct net_device *dev_ne[MAX_NE_CARDS];
-static int io[MAX_NE_CARDS];
-static int irq[MAX_NE_CARDS];
-static int bad[MAX_NE_CARDS];	/* 0xbad = bad sig or no reset ack */
+static int io[MAX_NE_CARDS] __initdata;
+static int irq[MAX_NE_CARDS] __initdata;
+static int bad[MAX_NE_CARDS] __initdata;	/* 0xbad = bad sig or no reset ack */
 
 module_param_array(io, int, NULL, 0);
 module_param_array(irq, int, NULL, 0);
@@ -815,7 +813,7 @@ that the ne2k probe is the last 8390 bas
 is at boot) and so the probe will get confused by any other 8390 cards.
 ISA device autoprobes on a running machine are not recommended anyway. */
 
-int init_module(void)
+static int __init ne_init_module(void)
 {
 	int this_dev, found = 0;
 
@@ -847,7 +845,7 @@ int init_module(void)
 	return -ENODEV;
 }
 
-void cleanup_module(void)
+static void __exit ne_cleanup_module(void)
 {
 	int this_dev;
 
@@ -860,4 +858,7 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif /* MODULE */
+
+module_init(ne_init_module)
+module_exit(ne_cleanup_module)
+
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/ne-h8300.c linux-2.6.12-rc5-kj/drivers/net/ne-h8300.c
--- vanilla-2.6.12-rc5-kj/drivers/net/ne-h8300.c	2005-05-28 00:28:08.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/ne-h8300.c	2005-05-27 23:24:54.000000000 +0200
@@ -593,13 +593,11 @@ retry:
 	return;
 }
 
-\f
-#ifdef MODULE
 #define MAX_NE_CARDS	1	/* Max number of NE cards per module */
 static struct net_device *dev_ne[MAX_NE_CARDS];
-static int io[MAX_NE_CARDS];
-static int irq[MAX_NE_CARDS];
-static int bad[MAX_NE_CARDS];	/* 0xbad = bad sig or no reset ack */
+static int io[MAX_NE_CARDS] __initdata;
+static int irq[MAX_NE_CARDS] __initdata;
+static int bad[MAX_NE_CARDS] __initdata;	/* 0xbad = bad sig or no reset ack */
 
 MODULE_PARM(io, "1-" __MODULE_STRING(MAX_NE_CARDS) "i");
 MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_NE_CARDS) "i");
@@ -614,7 +612,7 @@ that the ne2k probe is the last 8390 bas
 is at boot) and so the probe will get confused by any other 8390 cards.
 ISA device autoprobes on a running machine are not recommended anyway. */
 
-int init_module(void)
+static int __init ne_init_module(void)
 {
 	int this_dev, found = 0;
 	int err;
@@ -655,7 +653,7 @@ int init_module(void)
 	return -ENODEV;
 }
 
-void cleanup_module(void)
+static void __exit ne_cleanup_module(void)
 {
 	int this_dev;
 
@@ -668,4 +666,7 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif /* MODULE */
+
+module_init(ne_init_module)
+module_exit(ne_cleanup_module)
+
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/ni5010.c linux-2.6.12-rc5-kj/drivers/net/ni5010.c
--- vanilla-2.6.12-rc5-kj/drivers/net/ni5010.c	2005-03-02 08:38:08.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/ni5010.c	2005-05-28 00:34:50.000000000 +0200
@@ -763,7 +763,6 @@ static void ni5010_show_registers(struct
 	PRINTK3((KERN_DEBUG "%s: ISTAT %#2.2x\n", dev->name, inb(IE_ISTAT)));
 }
 
-#ifdef MODULE
 static struct net_device *dev_ni5010;
 
 MODULE_PARM(io, "i");
@@ -771,7 +770,7 @@ MODULE_PARM(irq, "i");
 MODULE_PARM_DESC(io, "ni5010 I/O base address");
 MODULE_PARM_DESC(irq, "ni5010 IRQ number");
 
-int init_module(void)
+static int __init ni5010_init_module(void)
 {
 	PRINTK2((KERN_DEBUG "%s: entering init_module\n", boardname));
 	/*
@@ -792,15 +791,16 @@ int init_module(void)
         return 0;
 }
 
-void cleanup_module(void)
+static void __exit ni5010_cleanup_module(void)
 {
 	PRINTK2((KERN_DEBUG "%s: entering cleanup_module\n", boardname));
 	unregister_netdev(dev_ni5010);
 	release_region(dev_ni5010->base_addr, NI5010_IO_EXTENT);
 	free_netdev(dev_ni5010);
 }
-#endif /* MODULE */
 MODULE_LICENSE("GPL");
+module_init(ni5010_init_module)
+module_exit(ni5010_cleanup_module)
 
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/ni52.c linux-2.6.12-rc5-kj/drivers/net/ni52.c
--- vanilla-2.6.12-rc5-kj/drivers/net/ni52.c	2005-03-02 08:38:10.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/ni52.c	2005-05-28 00:20:03.000000000 +0200
@@ -1311,7 +1311,6 @@ static void set_multicast_list(struct ne
 	netif_wake_queue(dev);
 }
 
-#ifdef MODULE
 static struct net_device *dev_ni52;
 
 module_param(io, int, 0);
@@ -1323,7 +1322,7 @@ MODULE_PARM_DESC(irq, "NI5210 IRQ number
 MODULE_PARM_DESC(memstart, "NI5210 memory base address,required");
 MODULE_PARM_DESC(memend, "NI5210 memory end address,required");
 
-int init_module(void)
+static int __init ni52_init_module(void)
 {
 	if(io <= 0x0 || !memend || !memstart || irq < 2) {
 		printk("ni52: Autoprobing not allowed for modules.\nni52: Set symbols 'io' 'irq' 'memstart' and 'memend'\n");
@@ -1335,13 +1334,12 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit ni52_cleanup_module(void)
 {
 	unregister_netdev(dev_ni52);
 	release_region(dev_ni52->base_addr, NI52_TOTAL_SIZE);
 	free_netdev(dev_ni52);
 }
-#endif /* MODULE */
 
 #if 0
 /*
@@ -1380,6 +1378,8 @@ void ni52_dump(struct net_device *dev,vo
 }
 #endif
 MODULE_LICENSE("GPL");
+module_init(ni52_init_module)
+module_exit(ni52_cleanup_module)
 
 /*
  * END: linux/drivers/net/ni52.c
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/ni65.c linux-2.6.12-rc5-kj/drivers/net/ni65.c
--- vanilla-2.6.12-rc5-kj/drivers/net/ni65.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/ni65.c	2005-05-27 23:09:56.000000000 +0200
@@ -1246,7 +1246,6 @@ static void set_multicast_list(struct ne
 	netif_wake_queue(dev);
 }
 
-#ifdef MODULE
 static struct net_device *dev_ni65;
 
 module_param(irq, int, 0);
@@ -1256,21 +1255,22 @@ MODULE_PARM_DESC(irq, "ni6510 IRQ number
 MODULE_PARM_DESC(io, "ni6510 I/O base address");
 MODULE_PARM_DESC(dma, "ni6510 ISA DMA channel (ignored for some cards)");
 
-int init_module(void)
+static int __init ni65_init_module(void)
 {
  	dev_ni65 = ni65_probe(-1);
 	return IS_ERR(dev_ni65) ? PTR_ERR(dev_ni65) : 0;
 }
 
-void cleanup_module(void)
+static void __exit ni65_cleanup_module(void)
 {
  	unregister_netdev(dev_ni65);
  	cleanup_card(dev_ni65);
  	free_netdev(dev_ni65);
 }
-#endif /* MODULE */
 
 MODULE_LICENSE("GPL");
+module_init(ni65_init_module)
+module_exit(ni65_cleanup_module)
 
 /*
  * END of ni65.c
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/seeq8005.c linux-2.6.12-rc5-kj/drivers/net/seeq8005.c
--- vanilla-2.6.12-rc5-kj/drivers/net/seeq8005.c	2005-03-02 08:38:17.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/seeq8005.c	2005-05-28 00:12:32.000000000 +0200
@@ -733,8 +733,6 @@ static void hardware_send_packet(struct 
 }
 
 
-#ifdef MODULE
-
 static struct net_device *dev_seeq;
 MODULE_LICENSE("GPL");
 module_param(io, int, 0);
@@ -742,7 +740,7 @@ module_param(irq, int, 0);
 MODULE_PARM_DESC(io, "SEEQ 8005 I/O base address");
 MODULE_PARM_DESC(irq, "SEEQ 8005 IRQ number");
 
-int init_module(void)
+static int __init seeq8005_init_module(void)
 {
 	dev_seeq = seeq8005_probe(-1);
 	if (IS_ERR(dev_seeq))
@@ -750,15 +748,16 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit seeq8005_cleanup_module(void)
 {
 	unregister_netdev(dev_seeq);
 	release_region(dev_seeq->base_addr, SEEQ8005_IO_EXTENT);
 	free_netdev(dev_seeq);
 }
 
-#endif /* MODULE */
-\f
+module_init(seeq8005_init_module)
+module_exit(seeq8005_cleanup_module)
+
 /*
  * Local variables:
  *  compile-command: "gcc -D__KERNEL__ -I/usr/src/linux/net/inet -Wall -Wstrict-prototypes -O6 -m486 -c skeleton.c"
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/sk_mca.c linux-2.6.12-rc5-kj/drivers/net/sk_mca.c
--- vanilla-2.6.12-rc5-kj/drivers/net/sk_mca.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/sk_mca.c	2005-05-27 23:08:08.000000000 +0200
@@ -1178,14 +1178,13 @@ struct net_device * __init skmca_probe(i
  * modularization support
  * ------------------------------------------------------------------------ */
 
-#ifdef MODULE
 MODULE_LICENSE("GPL");
 
 #define DEVMAX 5
 
 static struct net_device *moddevs[DEVMAX];
 
-int init_module(void)
+static int __init skmca_init_module(void)
 {
 	int z;
 
@@ -1201,7 +1200,7 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit skmca_cleanup_module(void)
 {
 	int z;
 
@@ -1214,4 +1213,7 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif				/* MODULE */
+
+module_init(skmca_init_module)
+module_exit(skmca_cleanup_module)
+
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/slhc.c linux-2.6.12-rc5-kj/drivers/net/slhc.c
--- vanilla-2.6.12-rc5-kj/drivers/net/slhc.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/slhc.c	2005-05-27 23:06:45.000000000 +0200
@@ -701,20 +701,17 @@ EXPORT_SYMBOL(slhc_compress);
 EXPORT_SYMBOL(slhc_uncompress);
 EXPORT_SYMBOL(slhc_toss);
 
-#ifdef MODULE
-
-int init_module(void)
+static int __init slhc_init_module(void)
 {
 	printk(KERN_INFO "CSLIP: code copyright 1989 Regents of the University of California\n");
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit slhc_cleanup_module(void)
 {
 	return;
 }
 
-#endif /* MODULE */
 #else /* CONFIG_INET */
 
 
@@ -766,3 +763,6 @@ EXPORT_SYMBOL(slhc_toss);
 
 #endif /* CONFIG_INET */
 MODULE_LICENSE("Dual BSD/GPL");
+module_init(slhc_init_module)
+module_exit(slhc_cleanup_module)
+
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/smc9194.c linux-2.6.12-rc5-kj/drivers/net/smc9194.c
--- vanilla-2.6.12-rc5-kj/drivers/net/smc9194.c	2005-03-02 08:38:17.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/smc9194.c	2005-05-28 00:11:23.000000000 +0200
@@ -1595,8 +1595,6 @@ static void smc_set_multicast_list(struc
 	}
 }
 
-#ifdef MODULE
-
 static struct net_device *devSMC9194;
 MODULE_LICENSE("GPL");
 
@@ -1607,7 +1605,7 @@ MODULE_PARM_DESC(io, "SMC 99194 I/O base
 MODULE_PARM_DESC(irq, "SMC 99194 IRQ number");
 MODULE_PARM_DESC(ifport, "SMC 99194 interface port (0-default, 1-TP, 2-AUI)");
 
-int init_module(void)
+static int __init smc_init_module(void)
 {
 	if (io == 0)
 		printk(KERN_WARNING
@@ -1620,7 +1618,7 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit smc_cleanup_module(void)
 {
 	unregister_netdev(devSMC9194);
 	free_irq(devSMC9194->irq, devSMC9194);
@@ -1628,4 +1626,5 @@ void cleanup_module(void)
 	free_netdev(devSMC9194);
 }
 
-#endif /* MODULE */
+module_init(smc_init_module)
+module_exit(smc_cleanup_module)
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/smc-ultra32.c linux-2.6.12-rc5-kj/drivers/net/smc-ultra32.c
--- vanilla-2.6.12-rc5-kj/drivers/net/smc-ultra32.c	2005-05-28 00:27:42.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/smc-ultra32.c	2005-05-27 23:05:28.000000000 +0200
@@ -413,15 +413,14 @@ static void ultra32_block_output(struct 
 
 	memcpy_toio(xfer_start, buf, count);
 }
-\f
-#ifdef MODULE
+
 #define MAX_ULTRA32_CARDS   4	/* Max number of Ultra cards per module */
 static struct net_device *dev_ultra[MAX_ULTRA32_CARDS];
 
 MODULE_DESCRIPTION("SMC Ultra32 EISA ethernet driver");
 MODULE_LICENSE("GPL");
 
-int init_module(void)
+static int __init ultra32_init_module(void)
 {
 	int this_dev, found = 0;
 
@@ -437,7 +436,7 @@ int init_module(void)
 	return -ENXIO;
 }
 
-void cleanup_module(void)
+static void __exit ultra32_cleanup_module(void)
 {
 	int this_dev;
 
@@ -450,5 +449,7 @@ void cleanup_module(void)
 		}
 	}
 }
-#endif /* MODULE */
+
+module_init(ultra32_init_module)
+module_exit(ultra32_cleanup_module)
 
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/sun3lance.c linux-2.6.12-rc5-kj/drivers/net/sun3lance.c
--- vanilla-2.6.12-rc5-kj/drivers/net/sun3lance.c	2005-03-02 08:38:25.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/sun3lance.c	2005-05-29 15:17:32.000000000 +0200
@@ -940,11 +940,9 @@ static void set_multicast_list( struct n
 }
 
 
-#ifdef MODULE
-
 static struct net_device *sun3lance_dev;
 
-int init_module(void)
+static int __init lance_init_module(void)
 {
 	sun3lance_dev = sun3lance_probe(-1);
 	if (IS_ERR(sun3lance_dev))
@@ -952,7 +950,7 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit lance_cleanup_module(void)
 {
 	unregister_netdev(sun3lance_dev);
 #ifdef CONFIG_SUN3
@@ -961,5 +959,6 @@ void cleanup_module(void)
 	free_netdev(sun3lance_dev);
 }
 
-#endif /* MODULE */
+module_init(lance_init_module)
+module_exit(lance_cleanup_module)
 
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/tokenring/proteon.c linux-2.6.12-rc5-kj/drivers/net/tokenring/proteon.c
--- vanilla-2.6.12-rc5-kj/drivers/net/tokenring/proteon.c	2005-03-02 08:38:26.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/tokenring/proteon.c	2005-05-28 00:58:22.000000000 +0200
@@ -352,13 +352,11 @@ static int proteon_open(struct net_devic
 	return tms380tr_open(dev);
 }
 
-#ifdef MODULE
-
 #define ISATR_MAX_ADAPTERS 3
 
-static int io[ISATR_MAX_ADAPTERS];
-static int irq[ISATR_MAX_ADAPTERS];
-static int dma[ISATR_MAX_ADAPTERS];
+static int io[ISATR_MAX_ADAPTERS] __initdata;
+static int irq[ISATR_MAX_ADAPTERS] __initdata;
+static int dma[ISATR_MAX_ADAPTERS] __initdata;
 
 MODULE_LICENSE("GPL");
 
@@ -368,7 +366,7 @@ module_param_array(dma, int, NULL, 0);
 
 static struct net_device *proteon_dev[ISATR_MAX_ADAPTERS];
 
-int init_module(void)
+static int __init proteon_init_module(void)
 {
 	struct net_device *dev;
 	int i, num = 0, err = 0;
@@ -399,7 +397,7 @@ int init_module(void)
 	return (0);
 }
 
-void cleanup_module(void)
+static void __exit proteon_cleanup_module(void)
 {
 	int i;
 
@@ -417,7 +415,8 @@ void cleanup_module(void)
 		free_netdev(dev);
 	}
 }
-#endif /* MODULE */
+module_init(proteon_init_module)
+module_exit(proteon_cleanup_module)
 
 \f
 /*
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/tokenring/skisa.c linux-2.6.12-rc5-kj/drivers/net/tokenring/skisa.c
--- vanilla-2.6.12-rc5-kj/drivers/net/tokenring/skisa.c	2005-03-02 08:37:48.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/tokenring/skisa.c	2005-05-28 01:04:53.000000000 +0200
@@ -361,13 +361,11 @@ static int sk_isa_open(struct net_device
 	return tms380tr_open(dev);
 }
 
-#ifdef MODULE
-
 #define ISATR_MAX_ADAPTERS 3
 
-static int io[ISATR_MAX_ADAPTERS];
-static int irq[ISATR_MAX_ADAPTERS];
-static int dma[ISATR_MAX_ADAPTERS];
+static int io[ISATR_MAX_ADAPTERS] __initdata;
+static int irq[ISATR_MAX_ADAPTERS] __initdata;
+static int dma[ISATR_MAX_ADAPTERS] __initdata;
 
 MODULE_LICENSE("GPL");
 
@@ -377,7 +375,7 @@ module_param_array(dma, int, NULL, 0);
 
 static struct net_device *sk_isa_dev[ISATR_MAX_ADAPTERS];
 
-int init_module(void)
+static int __init sk_isa_init_module(void)
 {
 	struct net_device *dev;
 	int i, num = 0, err = 0;
@@ -409,7 +407,7 @@ int init_module(void)
 	return (0);
 }
 
-void cleanup_module(void)
+static void __exit sk_isa_cleanup_module(void)
 {
 	int i;
 
@@ -427,8 +425,9 @@ void cleanup_module(void)
 		free_netdev(dev);
 	}
 }
-#endif /* MODULE */
 
+module_init(sk_isa_init_module)
+module_exit(sk_isa_cleanup_module)
 \f
 /*
  * Local variables:
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/tokenring/smctr.c linux-2.6.12-rc5-kj/drivers/net/tokenring/smctr.c
--- vanilla-2.6.12-rc5-kj/drivers/net/tokenring/smctr.c	2005-03-02 08:38:09.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/tokenring/smctr.c	2005-05-28 01:03:29.000000000 +0200
@@ -5655,11 +5655,9 @@ static int smctr_wait_while_cbusy(struct
                 return (HARDWARE_FAILED);
 }
 
-#ifdef MODULE
-
 static struct net_device* dev_smctr[SMCTR_MAX_ADAPTERS];
-static int io[SMCTR_MAX_ADAPTERS];
-static int irq[SMCTR_MAX_ADAPTERS];
+static int io[SMCTR_MAX_ADAPTERS] __initdata;
+static int irq[SMCTR_MAX_ADAPTERS] __initdata;
 
 MODULE_LICENSE("GPL");
 
@@ -5667,7 +5665,7 @@ module_param_array(io, int, NULL, 0);
 module_param_array(irq, int, NULL, 0);
 module_param(ringspeed, int, 0);
 
-static struct net_device *setup_card(int n)
+static struct net_device * __init setup_card(int n)
 {
 	struct net_device *dev = alloc_trdev(sizeof(struct net_local));
 	int err;
@@ -5699,7 +5697,7 @@ out:
 }
 			
 
-int init_module(void)
+static int __init smctr_init_module(void)
 {
         int i, found = 0;
 	struct net_device *dev;
@@ -5715,7 +5713,7 @@ int init_module(void)
         return found ? 0 : -ENODEV;
 }
 
-void cleanup_module(void)
+static void __exit smctr_cleanup_module(void)
 {
         int i;
 
@@ -5739,4 +5737,5 @@ void cleanup_module(void)
 		}
         }
 }
-#endif /* MODULE */
+module_init(smctr_init_module)
+module_exit(smctr_cleanup_module)
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/tokenring/tms380tr.c linux-2.6.12-rc5-kj/drivers/net/tokenring/tms380tr.c
--- vanilla-2.6.12-rc5-kj/drivers/net/tokenring/tms380tr.c	2005-05-28 00:28:08.000000000 +0200
+++ linux-2.6.12-rc5-kj/drivers/net/tokenring/tms380tr.c	2005-05-29 14:39:37.000000000 +0200
@@ -72,9 +72,7 @@
  *    5. Still a few remaining stalls when the cable is unplugged.
  */
 
-#ifdef MODULE
-static const char version[] = "tms380tr.c: v1.10 30/12/2002 by Christoph Goos, Adam Fritzler\n";
-#endif
+static const char version[] __initdata = "tms380tr.c: v1.10 30/12/2002 by Christoph Goos, Adam Fritzler\n";
 
 #include <linux/module.h>
 #include <linux/kernel.h>
@@ -2370,8 +2368,6 @@ int tmsdev_init(struct net_device *dev, 
 	return 0;
 }
 
-#ifdef MODULE
-
 EXPORT_SYMBOL(tms380tr_open);
 EXPORT_SYMBOL(tms380tr_close);
 EXPORT_SYMBOL(tms380tr_interrupt);
@@ -2379,23 +2375,20 @@ EXPORT_SYMBOL(tmsdev_init);
 EXPORT_SYMBOL(tmsdev_term);
 EXPORT_SYMBOL(tms380tr_wait);
 
-struct module *TMS380_module = NULL;
-
-int init_module(void)
+static int __init tms380_init_module(void)
 {
 	printk(KERN_DEBUG "%s", version);
 	
-	TMS380_module = &__this_module;
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit tms380_cleanup_module(void)
 {
-	TMS380_module = NULL;
 }
-#endif
 
 MODULE_LICENSE("GPL");
+module_init(tms380_init_module)
+module_exit(tms380_cleanup_module)
 
 \f
 /*
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/wan/hostess_sv11.c linux-2.6.12-rc5-kj/drivers/net/wan/hostess_sv11.c
--- vanilla-2.6.12-rc5-kj/drivers/net/wan/hostess_sv11.c	2005-03-02 08:38:13.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/wan/hostess_sv11.c	2005-05-28 01:06:49.000000000 +0200
@@ -383,10 +383,8 @@ static void sv11_shutdown(struct sv11_de
 	kfree(dev);
 }
 
-#ifdef MODULE
-
-static int io=0x200;
-static int irq=9;
+static int io __initdata = 0x200;
+static int irq __initdata = 9;
 
 module_param(io, int, 0);
 MODULE_PARM_DESC(io, "The I/O base of the Comtrol Hostess SV11 card");
@@ -401,7 +399,7 @@ MODULE_DESCRIPTION("Modular driver for t
 
 static struct sv11_device *sv11_unit;
 
-int init_module(void)
+static int __init sv11_init_module(void)
 {
 	printk(KERN_INFO "SV-11 Z85230 Synchronous Driver v 0.03.\n");
 	printk(KERN_INFO "(c) Copyright 2001, Red Hat Inc.\n");	
@@ -410,11 +408,11 @@ int init_module(void)
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit sv11_cleanup_module(void)
 {
 	if(sv11_unit)
 		sv11_shutdown(sv11_unit);
 }
 
-#endif
-
+module_init(sv11_init_module)
+module_exit(sv11_cleanup_module)
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/wireless/arlan-main.c linux-2.6.12-rc5-kj/drivers/net/wireless/arlan-main.c
--- vanilla-2.6.12-rc5-kj/drivers/net/wireless/arlan-main.c	2005-03-02 08:38:12.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/wireless/arlan-main.c	2005-05-29 00:54:42.000000000 +0200
@@ -1839,8 +1839,7 @@ struct net_device * __init arlan_probe(i
 	return dev;
 }
 
-#ifdef  MODULE
-int init_module(void)
+static int __init arlan_init_module(void)
 {
 	int i = 0;
 
@@ -1862,7 +1861,7 @@ int init_module(void)
 }
 
 
-void cleanup_module(void)
+static void __exit arlan_cleanup_module(void)
 {
 	int i = 0;
 	struct net_device *dev;
@@ -1891,6 +1890,6 @@ void cleanup_module(void)
 	ARLAN_DEBUG_EXIT("cleanup_module");
 }
 
-
-#endif
 MODULE_LICENSE("GPL");
+module_init(arlan_init_module)
+module_exit(arlan_cleanup_module)
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c linux-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c
--- vanilla-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c	2005-03-02 08:38:26.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c	2005-05-28 01:10:59.000000000 +0200
@@ -4308,13 +4308,12 @@ out:
  * Module entry point: insertion and removal
  */
 
-#ifdef	MODULE
 /*------------------------------------------------------------------*/
 /*
  * Insertion of the module
  * I'm now quite proud of the multi-device support.
  */
-int init_module(void)
+static int __init wavelan_init_module(void)
 {
 	int ret = -EIO;		/* Return error if no cards found */
 	int i;
@@ -4378,7 +4377,7 @@ int init_module(void)
 /*
  * Removal of the module
  */
-void cleanup_module(void)
+static void __exit wavelan_cleanup_module(void)
 {
 #ifdef DEBUG_MODULE_TRACE
 	printk(KERN_DEBUG "-> cleanup_module()\n");
@@ -4405,8 +4404,9 @@ void cleanup_module(void)
 	printk(KERN_DEBUG "<- cleanup_module()\n");
 #endif
 }
-#endif				/* MODULE */
 MODULE_LICENSE("GPL");
+module_init(wavelan_init_module)
+module_exit(wavelan_cleanup_module)
 
 /*
  * This software may only be used and distributed
diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/wireless/wavelan.p.h linux-2.6.12-rc5-kj/drivers/net/wireless/wavelan.p.h
--- vanilla-2.6.12-rc5-kj/drivers/net/wireless/wavelan.p.h	2005-03-02 08:38:13.000000000 +0100
+++ linux-2.6.12-rc5-kj/drivers/net/wireless/wavelan.p.h	2005-05-29 14:45:47.000000000 +0200
@@ -699,11 +699,10 @@ static unsigned short	iobase[]	=
   0x390, 0x3E0
 };
 
-#ifdef	MODULE
 /* Parameters set by insmod */
-static int	io[4];
-static int	irq[4];
-static char	*name[4];
+static int	io[4] __initdata;
+static int	irq[4] __initdata;
+static char	*name[4] __initdata;
 module_param_array(io, int, NULL, 0);
 module_param_array(irq, int, NULL, 0);
 module_param_array(name, charp, NULL, 0);
@@ -711,6 +710,5 @@ module_param_array(name, charp, NULL, 0)
 MODULE_PARM_DESC(io, "WaveLAN I/O base address(es),required");
 MODULE_PARM_DESC(irq, "WaveLAN IRQ number(s)");
 MODULE_PARM_DESC(name, "WaveLAN interface neme(s)");
-#endif	/* MODULE */
 
 #endif	/* WAVELAN_P_H */

[-- Attachment #3: Type: text/plain, Size: 167 bytes --]

_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
http://lists.osdl.org/mailman/listinfo/kernel-janitors

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [KJ] init_module / cleanup_module cleanup
  2005-05-28 10:50 [KJ] init_module / cleanup_module cleanup Reiner Herrmann
                   ` (2 preceding siblings ...)
  2005-05-29 13:42 ` Reiner Herrmann
@ 2005-06-19 19:50 ` Domen Puncer
  3 siblings, 0 replies; 5+ messages in thread
From: Domen Puncer @ 2005-06-19 19:50 UTC (permalink / raw)
  To: kernel-janitors

[-- Attachment #1: Type: text/plain, Size: 1736 bytes --]

Sorry it took so long for me to reply.

On 29/05/05 15:42 +0200, Reiner Herrmann wrote:
> Domen Puncer wrote:
> > Missing "Signed-off-by:";
> > Patch should probably be split per dir (diffsplit -d) and if some patch
> > touches >1 file of a driver, per driver.
> In my opinion in this case it is OK, if there is only one patch,
> because I did only a single logical change to these files.

Still it makes some sense to put wireless, tokenring etc. in
different patches. But i'm just nitpicking.

> 
> > Also, diffstat -p1 when patching multiple files is great.
> > (http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt is a nice
> >  read).
> Thank you for the hint. I'll use this tool from now on.
> 
> >>diff -uprN vanilla-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c linux-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c
> >>--- vanilla-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c	2005-03-02 08:38:26.000000000 +0100
> >>+++ linux-2.6.12-rc5-kj/drivers/net/wireless/wavelan.c	2005-05-28 01:10:59.000000000 +0200
> > 
> > 
> > This one (and probably some others) won't compile on !MODULE, because
> > it includes wavelan.p.h with variables only defined on MODULE.
> > 
> > An ugly hack i used to quickly compile test it:
> > 	egrep "^--- " ~/netdrivers_module_cleanup.diff | cut -f2 -d' '| cut -f1 | cut -f2- -d'/' | sed 's/.c$/.o/g' | xargs -n1 make 2>&1
> 
> The appended patch should now be correct.

Doesn't look like, on at least !MODULE:
	domen@nd47:~/kernel/a$ wc -l netdrivers_*
	  399 netdrivers_not_patched
	  429 netdrivers_patched
	  828 total
	domen@nd47:~/kernel/a$ grep error -c netdrivers_*
	netdrivers_not_patched:113
	netdrivers_patched:128

A nice example is tms380tr which compiled cleanly before, but fails
now.

[-- Attachment #2: Type: text/plain, Size: 167 bytes --]

_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
http://lists.osdl.org/mailman/listinfo/kernel-janitors

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2005-06-19 19:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-05-28 10:50 [KJ] init_module / cleanup_module cleanup Reiner Herrmann
2005-05-28 13:13 ` Domen Puncer
2005-05-28 18:20 ` randy_dunlap
2005-05-29 13:42 ` Reiner Herrmann
2005-06-19 19:50 ` Domen Puncer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.