From 95759639ef09fc2439cd092cb8ee6e067aac6220 Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Wed, 3 Sep 2003 11:13:04 -0700 Subject: [PATCH] [PATCH] MODULE_ALIAS() in char devices From: Rusty Russell Previously, default aliases were hardwired into modutils. Now they should be inside the modules, using MODULE_ALIAS() (they will be overridden by any user alias). --- arch/i386/kernel/apm.c | 2 +- drivers/char/agp/backend.c | 1 + drivers/char/agp/frontend.c | 1 - drivers/char/busmouse.c | 1 + drivers/char/lp.c | 1 + drivers/char/nvram.c | 1 + drivers/char/rtc.c | 1 + drivers/char/watchdog/wdt.c | 2 ++ drivers/media/video/bttv-driver.c | 1 + drivers/net/ppp_generic.c | 1 + drivers/net/tun.c | 1 + include/linux/device.h | 5 +++++ include/linux/miscdevice.h | 5 +++++ 13 files changed, 21 insertions(+), 2 deletions(-) diff --git a/arch/i386/kernel/apm.c b/arch/i386/kernel/apm.c index 94ff91ebe2e0e..6651e1941eaaf 100644 --- a/arch/i386/kernel/apm.c +++ b/arch/i386/kernel/apm.c @@ -2080,4 +2080,4 @@ MODULE_PARM_DESC(idle_period, MODULE_PARM(smp, "i"); MODULE_PARM_DESC(smp, "Set this to enable APM use on an SMP platform. Use with caution on older systems"); - +MODULE_ALIAS_MISCDEV(APM_MINOR_DEV); diff --git a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c index 0ba95771e9e18..8280faa7ee9ee 100644 --- a/drivers/char/agp/backend.c +++ b/drivers/char/agp/backend.c @@ -331,6 +331,7 @@ __setup("agp=", agp_setup); MODULE_AUTHOR("Dave Jones "); MODULE_DESCRIPTION("AGP GART driver"); MODULE_LICENSE("GPL and additional rights"); +MODULE_ALIAS_MISCDEV(AGPGART_MINOR); module_init(agp_init); module_exit(agp_exit); diff --git a/drivers/char/agp/frontend.c b/drivers/char/agp/frontend.c index 6ff8d157fc6dd..ef1fa6db95708 100644 --- a/drivers/char/agp/frontend.c +++ b/drivers/char/agp/frontend.c @@ -1097,4 +1097,3 @@ void agp_frontend_cleanup(void) { misc_deregister(&agp_miscdev); } - diff --git a/drivers/char/busmouse.c b/drivers/char/busmouse.c index 126d77f8a2159..b0416f721054d 100644 --- a/drivers/char/busmouse.c +++ b/drivers/char/busmouse.c @@ -452,4 +452,5 @@ EXPORT_SYMBOL(busmouse_add_buttons); EXPORT_SYMBOL(register_busmouse); EXPORT_SYMBOL(unregister_busmouse); +MODULE_ALIAS_MISCDEV(BUSMOUSE_MINOR); MODULE_LICENSE("GPL"); diff --git a/drivers/char/lp.c b/drivers/char/lp.c index 46be7a8ac3d36..56ffc3965d761 100644 --- a/drivers/char/lp.c +++ b/drivers/char/lp.c @@ -965,4 +965,5 @@ __setup("lp=", lp_setup); module_init(lp_init_module); module_exit(lp_cleanup_module); +MODULE_ALIAS("char-major-" __stringify(LP_MAJOR)); MODULE_LICENSE("GPL"); diff --git a/drivers/char/nvram.c b/drivers/char/nvram.c index 96daf9d5d80e2..7b6ee59edf081 100644 --- a/drivers/char/nvram.c +++ b/drivers/char/nvram.c @@ -923,3 +923,4 @@ EXPORT_SYMBOL(__nvram_check_checksum); EXPORT_SYMBOL(nvram_check_checksum); EXPORT_SYMBOL(__nvram_set_checksum); EXPORT_SYMBOL(nvram_set_checksum); +MODULE_ALIAS_MISCDEV(NVRAM_MINOR); diff --git a/drivers/char/rtc.c b/drivers/char/rtc.c index 166002b12674e..fcdc4eb0b9acd 100644 --- a/drivers/char/rtc.c +++ b/drivers/char/rtc.c @@ -1345,3 +1345,4 @@ static void set_rtc_irq_bit(unsigned char bit) MODULE_AUTHOR("Paul Gortmaker"); MODULE_LICENSE("GPL"); +MODULE_ALIAS_MISCDEV(RTC_MINOR); diff --git a/drivers/char/watchdog/wdt.c b/drivers/char/watchdog/wdt.c index e1760847f6d3b..989a5a89a2abc 100644 --- a/drivers/char/watchdog/wdt.c +++ b/drivers/char/watchdog/wdt.c @@ -579,4 +579,6 @@ module_exit(wdt_exit); MODULE_AUTHOR("Alan Cox"); MODULE_DESCRIPTION("Driver for ISA ICS watchdog cards (WDT500/501)"); +MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); +MODULE_ALIAS_MISCDEV(TEMP_MINOR); MODULE_LICENSE("GPL"); diff --git a/drivers/media/video/bttv-driver.c b/drivers/media/video/bttv-driver.c index 76f91782da48c..3f3ef3025c135 100644 --- a/drivers/media/video/bttv-driver.c +++ b/drivers/media/video/bttv-driver.c @@ -115,6 +115,7 @@ MODULE_PARM(v4l2,"i"); MODULE_DESCRIPTION("bttv - v4l/v4l2 driver module for bt848/878 based cards"); MODULE_AUTHOR("Ralph Metzler & Marcus Metzler & Gerd Knorr"); MODULE_LICENSE("GPL"); +MODULE_ALIAS_CHARDEV_MAJOR(VIDEO_MAJOR); /* kernel args */ #ifndef MODULE diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c index c96dbc2bd1505..6b30d5f28c10a 100644 --- a/drivers/net/ppp_generic.c +++ b/drivers/net/ppp_generic.c @@ -2670,3 +2670,4 @@ EXPORT_SYMBOL(ppp_unregister_compressor); EXPORT_SYMBOL(all_ppp_units); /* for debugging */ EXPORT_SYMBOL(all_channels); /* for debugging */ MODULE_LICENSE("GPL"); +MODULE_ALIAS_CHARDEV_MAJOR(PPP_MAJOR); diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 860e53b4d6967..784a41d78ebf8 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -640,3 +640,4 @@ void tun_cleanup(void) module_init(tun_init); module_exit(tun_cleanup); MODULE_LICENSE("GPL"); +MODULE_ALIAS_MISCDEV(TUN_MINOR); diff --git a/include/linux/device.h b/include/linux/device.h index 8d6266f2e3c3e..96043c0f46c5e 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -398,4 +398,9 @@ extern void firmware_unregister(struct subsystem *); #define dev_warn(dev, format, arg...) \ dev_printk(KERN_WARNING , dev , format , ## arg) +/* Create alias, so I can be autoloaded. */ +#define MODULE_ALIAS_CHARDEV(major,minor) \ + MODULE_ALIAS("char-major-" __stringify(major) "-" __stringify(minor)) +#define MODULE_ALIAS_CHARDEV_MAJOR(major) \ + MODULE_ALIAS("char-major-" __stringify(major) "-*") #endif /* _DEVICE_H_ */ diff --git a/include/linux/miscdevice.h b/include/linux/miscdevice.h index 159f8ab3df80e..23b0958891116 100644 --- a/include/linux/miscdevice.h +++ b/include/linux/miscdevice.h @@ -1,5 +1,7 @@ #ifndef _LINUX_MISCDEVICE_H #define _LINUX_MISCDEVICE_H +#include +#include #define BUSMOUSE_MINOR 0 #define PSMOUSE_MINOR 1 @@ -48,4 +50,7 @@ struct miscdevice extern int misc_register(struct miscdevice * misc); extern int misc_deregister(struct miscdevice * misc); +#define MODULE_ALIAS_MISCDEV(minor) \ + MODULE_ALIAS("char-major-" __stringify(MISC_MAJOR) \ + "-" __stringify(minor)) #endif -- 2.53.0