Staging: speakup: Introduce helper macro module_spk_synth
cover Staging: speakup: Introduce helper macro module_spk_synth
This patch-set adds new macro module_spk_synth for simple modules that contain a single spk_synth without any additional setup code then ends up being a block of duplicated boilerplate. Macro module_spk_synth replaces module_init()/module_exit() registrations with template functions. So, patch-set also handles all such cases where module_spk_synth can be used.
Vaishali Thakkar (2):
Staging: speakup: Add helper macro for spk_synth boilerplate
Staging: speakup: Use module_spk_synth
drivers/staging/speakup/speakup_acntpc.c | 12 +----------- drivers/staging/speakup/speakup_acntsa.c | 12 +----------- drivers/staging/speakup/speakup_apollo.c | 12 +----------- drivers/staging/speakup/speakup_audptr.c | 12 +----------- drivers/staging/speakup/speakup_bns.c | 12 +----------- drivers/staging/speakup/speakup_decext.c | 12 +----------- drivers/staging/speakup/speakup_decpc.c | 12 +----------- drivers/staging/speakup/speakup_dectlk.c | 12 +----------- drivers/staging/speakup/speakup_dtlk.c | 12 +----------- drivers/staging/speakup/speakup_dummy.c | 12 +----------- drivers/staging/speakup/speakup_keypc.c | 12 +----------- drivers/staging/speakup/speakup_ltlk.c | 12 +----------- drivers/staging/speakup/speakup_soft.c | 13 +------------ drivers/staging/speakup/speakup_spkout.c | 12 +----------- drivers/staging/speakup/speakup_txprt.c | 12 +----------- drivers/staging/speakup/spk_types.h | 10 ++++++++++ 16 files changed, 25 insertions(+), 166 deletions(-)
Signature · 1 line
1.9.1
PATCH v3 1/2 Staging: speakup: Add helper macro for spk_synth boilerplate
For simple modules that contain a single spk_synth without any additional setup code then ends up being a block of duplicated boilerplate. This patch adds a new macro, module_spk_synth(), which replaces the module_init()/module_exit() registrations with template functions.
---
Changes since v1:
- Use module_driver macro in definition of helper macro
Changes since v2:
- Correct unnecessory line wrapping of module_driver
- Split patch in to 2 patches
drivers/staging/speakup/spk_types.h | 10 ++++++++++ 1 file changed, 10 insertions(+)
drivers/staging/speakup/spk_types.h +10 -0
@@ -16,6 +16,7 @@#include <linux/spinlock.h> #include <linux/mutex.h> #include <linux/io.h> /* for inb_p, outb_p, inb, outb, etc... */ +#include <linux/device.h> /* for struct device */ enum var_type_t {VAR_NUM =0 ,
@@ -179,6 +180,15 @@ struct spk_synth {struct attribute_group attributes; }; +/** +* module_spk_synth() - Helper macro for registering a speakup driver +* @__spk_synth: spk_synth struct +* Helper macro for speakup drivers which do not do anything special in module +* init/exit. This eliminates a lot of boilerplate. Each module may only +* use this macro once, and calling it replaces module_init() and module_exit() +*/ +#define module_spk_synth (__spk_synth) \ + module_driver(__spk_synth, synth_add, synth_remove)struct speakup_info_t {spinlock_t spinlock;int port_tts;
Signature · 1 line
1.9.1
Greg KH
maintainerRe: [Outreachy kernel] [PATCH v3 1/2] Staging: speakup: Add helper macro for spk_synth boilerplate
Quoted 34 lines · Vaishali Thakkar
For simple modules that contain a single
spk_synthwithout any additional setup code then ends up being a block of duplicated boilerplate. This patch adds a new macro,module_spk_synth(), which replaces the module_init()/module_exit() registrations with template functions.Signed-off-by Vaishali Thakkar <[email protected]>---
Changes since v1:
- Usemodule_drivermacro in definition of helper macro
Changes since v2:
- Correct unnecessory line wrapping ofmodule_driver
- Split patch in to 2 patchesdrivers/staging/speakup/spk_types.h | 10 ++++++++++ 1 file changed, 10 insertions(+)drivers/staging/speakup/spk_types.h +1
-0@@ -16,6 +16,7 @@#include <linux/spinlock.h> #include <linux/mutex.h> #include <linux/io.h> /* for inb_p, outb_p, inb, outb, etc... */ +#include <linux/device.h> /* for struct device */ enum var_type_t {VAR_NUM =0 ,@@ -179,6 +180,15 @@ struct spk_synth {struct attribute_group attributes; };
drivers/staging/speakup/spk_types.h struct spk_synth { · line 192
Quoted 10 lines
drivers/staging/speakup/spk_types.h +9
-0+/** +* module_spk_synth() - Helper macro for registering a speakup driver +* @__spk_synth: spk_synth struct +* Helper macro for speakup drivers which do not do anything special in module +* init/exit. This eliminates a lot of boilerplate. Each module may only +* use this macro once, and calling it replaces module_init() and module_exit() +*/ +#define module_spk_synth (__spk_synth) \ + module_driver(__spk_synth, synth_add, synth_remove)struct speakup_info_t {
Please put a blank line after your new macro.
Can you fix that up and resend?
thanks,
greg k-h
Re: [Outreachy kernel] [PATCH v3 1/2] Staging: speakup: Add helper macro for spk_synth boilerplate
Quoted 48 lines · Greg KH
Quoted 34 lines · Vaishali Thakkar
For simple modules that contain a single
spk_synthwithout any additional setup code then ends up being a block of duplicated boilerplate. This patch adds a new macro,module_spk_synth(), which replaces the module_init()/module_exit() registrations with template functions.Signed-off-by Vaishali Thakkar <[email protected]>---
Changes since v1:
- Usemodule_drivermacro in definition of helper macro
Changes since v2:
- Correct unnecessory line wrapping ofmodule_driver
- Split patch in to 2 patchesdrivers/staging/speakup/spk_types.h | 10 ++++++++++ 1 file changed, 10 insertions(+)drivers/staging/speakup/spk_types.h +1
-0@@ -16,6 +16,7 @@#include <linux/spinlock.h> #include <linux/mutex.h> #include <linux/io.h> /* for inb_p, outb_p, inb, outb, etc... */ +#include <linux/device.h> /* for struct device */ enum var_type_t {VAR_NUM =0 ,@@ -179,6 +180,15 @@ struct spk_synth {struct attribute_group attributes; };drivers/staging/speakup/spk_types.h struct spk_synth { · line 192
Quoted 10 lines
drivers/staging/speakup/spk_types.h +9
-0+/** +* module_spk_synth() - Helper macro for registering a speakup driver +* @__spk_synth: spk_synth struct +* Helper macro for speakup drivers which do not do anything special in module +* init/exit. This eliminates a lot of boilerplate. Each module may only +* use this macro once, and calling it replaces module_init() and module_exit() +*/ +#define module_spk_synth (__spk_synth) \ + module_driver(__spk_synth, synth_add, synth_remove)struct speakup_info_t {Please put a blank line after your new macro.
Quoted 2 lines
Can you fix that up and resend?
Oops! my bad :( .
Yes, I am sending v2 of patch series with this change.
Quoted 3 lines
thanks,
greg k-h
Signature · 1 line
Vaishali
PATCH 2/2 Staging: speakup: Use module_spk_synth
In reply to Vaishali ThakkarMacro module_spk_synth can be used for speakup drivers whose init and exit paths does only module registrations. So, here remove some boilerplate code by using module_spk_synth.
--- drivers/staging/speakup/speakup_acntpc.c | 12 +----------- drivers/staging/speakup/speakup_acntsa.c | 12 +----------- drivers/staging/speakup/speakup_apollo.c | 12 +----------- drivers/staging/speakup/speakup_audptr.c | 12 +----------- drivers/staging/speakup/speakup_bns.c | 12 +----------- drivers/staging/speakup/speakup_decext.c | 12 +----------- drivers/staging/speakup/speakup_decpc.c | 12 +----------- drivers/staging/speakup/speakup_dectlk.c | 12 +----------- drivers/staging/speakup/speakup_dtlk.c | 12 +----------- drivers/staging/speakup/speakup_dummy.c | 12 +----------- drivers/staging/speakup/speakup_keypc.c | 12 +----------- drivers/staging/speakup/speakup_ltlk.c | 12 +----------- drivers/staging/speakup/speakup_soft.c | 13 +------------ drivers/staging/speakup/speakup_spkout.c | 12 +----------- drivers/staging/speakup/speakup_txprt.c | 12 +----------- 15 files changed, 15 insertions(+), 166 deletions(-)
drivers/staging/speakup/speakup_acntpc.c +1 -11
@@ -318,18 +318,8 @@ module_param_named(start, synth_acntpc.startup, short, S_IRUGO);MODULE_PARM_DESC (port,"Set the port for the synthesizer (override probing)." );MODULE_PARM_DESC (start,"Start the synthesizer once it is loaded." ); -static int __init acntpc_init (void ) -{ -return synth_add (&synth_acntpc); -} - -static void __exit acntpc_exit(void) -{ -synth_remove (&synth_acntpc); -} +module_spk_synth (synth_acntpc); -module_init (acntpc_init); -module_exit (acntpc_exit);MODULE_AUTHOR ("Kirk Reiser <[email protected]>" );MODULE_AUTHOR ("David Borowski" );MODULE_DESCRIPTION ("Speakup support for Accent PC synthesizer" );
drivers/staging/speakup/speakup_acntsa.c +1 -11
@@ -143,18 +143,8 @@ module_param_named(start, synth_acntsa.startup, short, S_IRUGO);MODULE_PARM_DESC (ser,"Set the serial port for the synthesizer (0-based)." );MODULE_PARM_DESC (start,"Start the synthesizer once it is loaded." ); -static int __init acntsa_init (void ) -{ -return synth_add (&synth_acntsa); -} - -static void __exit acntsa_exit(void) -{ -synth_remove (&synth_acntsa); -} +module_spk_synth (synth_acntsa); -module_init (acntsa_init); -module_exit (acntsa_exit);MODULE_AUTHOR ("Kirk Reiser <[email protected]>" );MODULE_AUTHOR ("David Borowski" );MODULE_DESCRIPTION ("Speakup support for Accent SA synthesizer" );
drivers/staging/speakup/speakup_apollo.c +1 -11
@@ -207,18 +207,8 @@ module_param_named(start, synth_apollo.startup, short, S_IRUGO);MODULE_PARM_DESC (ser,"Set the serial port for the synthesizer (0-based)." );MODULE_PARM_DESC (start,"Start the synthesizer once it is loaded." ); -static int __init apollo_init (void ) -{ -return synth_add (&synth_apollo); -} - -static void __exit apollo_exit(void) -{ -synth_remove (&synth_apollo); -} +module_spk_synth (synth_apollo); -module_init (apollo_init); -module_exit (apollo_exit);MODULE_AUTHOR ("Kirk Reiser <[email protected]>" );MODULE_AUTHOR ("David Borowski" );MODULE_DESCRIPTION ("Speakup support for Apollo II synthesizer" );
drivers/staging/speakup/speakup_audptr.c +1 -11
@@ -177,18 +177,8 @@ module_param_named(start, synth_audptr.startup, short, S_IRUGO);MODULE_PARM_DESC (ser,"Set the serial port for the synthesizer (0-based)." );MODULE_PARM_DESC (start,"Start the synthesizer once it is loaded." ); -static int __init audptr_init (void ) -{ -return synth_add (&synth_audptr); -} - -static void __exit audptr_exit(void) -{ -synth_remove (&synth_audptr); -} +module_spk_synth (synth_audptr); -module_init (audptr_init); -module_exit (audptr_exit);MODULE_AUTHOR ("Kirk Reiser <[email protected]>" );MODULE_AUTHOR ("David Borowski" );MODULE_DESCRIPTION ("Speakup support for Audapter synthesizer" );
drivers/staging/speakup/speakup_bns.c +1 -11
@@ -127,18 +127,8 @@ module_param_named(start, synth_bns.startup, short, S_IRUGO);MODULE_PARM_DESC (ser,"Set the serial port for the synthesizer (0-based)." );MODULE_PARM_DESC (start,"Start the synthesizer once it is loaded." ); -static int __init bns_init (void ) -{ -return synth_add (&synth_bns); -} +module_spk_synth (synth_bns); -static void __exit bns_exit(void) -{ -synth_remove (&synth_bns); -} - -module_init (bns_init); -module_exit (bns_exit);MODULE_AUTHOR ("Kirk Reiser <[email protected]>" );MODULE_AUTHOR ("David Borowski" );MODULE_DESCRIPTION ("Speakup support for Braille 'n Speak synthesizers" );
drivers/staging/speakup/speakup_decext.c +1 -11
@@ -234,18 +234,8 @@ module_param_named(start, synth_decext.startup, short, S_IRUGO);MODULE_PARM_DESC (ser,"Set the serial port for the synthesizer (0-based)." );MODULE_PARM_DESC (start,"Start the synthesizer once it is loaded." ); -static int __init decext_init (void ) -{ -return synth_add (&synth_decext); -} - -static void __exit decext_exit(void) -{ -synth_remove (&synth_decext); -} +module_spk_synth (synth_decext); -module_init (decext_init); -module_exit (decext_exit);MODULE_AUTHOR ("Kirk Reiser <[email protected]>" );MODULE_AUTHOR ("David Borowski" );MODULE_DESCRIPTION ("Speakup support for DECtalk External synthesizers" );
drivers/staging/speakup/speakup_decpc.c +1 -11
@@ -491,18 +491,8 @@ module_param_named(start, synth_dec_pc.startup, short, S_IRUGO);MODULE_PARM_DESC (start,"Start the synthesizer once it is loaded." ); -static int __init decpc_init (void ) -{ -return synth_add (&synth_dec_pc); -} - -static void __exit decpc_exit(void) -{ -synth_remove (&synth_dec_pc); -} +module_spk_synth (synth_dec_pc); -module_init (decpc_init); -module_exit (decpc_exit);MODULE_AUTHOR ("Kirk Reiser <[email protected]>" );MODULE_AUTHOR ("David Borowski" );MODULE_DESCRIPTION ("Speakup support for DECtalk PC synthesizers" );
drivers/staging/speakup/speakup_dectlk.c +1 -11
@@ -306,18 +306,8 @@ module_param_named(start, synth_dectlk.startup, short, S_IRUGO);MODULE_PARM_DESC (ser,"Set the serial port for the synthesizer (0-based)." );MODULE_PARM_DESC (start,"Start the synthesizer once it is loaded." ); -static int __init dectlk_init (void ) -{ -return synth_add (&synth_dectlk); -} - -static void __exit dectlk_exit(void) -{ -synth_remove (&synth_dectlk); -} +module_spk_synth (synth_dectlk); -module_init (dectlk_init); -module_exit (dectlk_exit);MODULE_AUTHOR ("Kirk Reiser <[email protected]>" );MODULE_AUTHOR ("David Borowski" );MODULE_DESCRIPTION ("Speakup support for DECtalk Express synthesizers" );
drivers/staging/speakup/speakup_dtlk.c +1 -11
@@ -388,18 +388,8 @@ module_param_named(start, synth_dtlk.startup, short, S_IRUGO);MODULE_PARM_DESC (port,"Set the port for the synthesizer (override probing)." );MODULE_PARM_DESC (start,"Start the synthesizer once it is loaded." ); -static int __init dtlk_init (void ) -{ -return synth_add (&synth_dtlk); -} - -static void __exit dtlk_exit(void) -{ -synth_remove (&synth_dtlk); -} +module_spk_synth (synth_dtlk); -module_init (dtlk_init); -module_exit (dtlk_exit);MODULE_AUTHOR ("Kirk Reiser <[email protected]>" );MODULE_AUTHOR ("David Borowski" );MODULE_DESCRIPTION ("Speakup support for DoubleTalk PC synthesizers" );
drivers/staging/speakup/speakup_dummy.c +1 -11
@@ -129,18 +129,8 @@ module_param_named(start, synth_dummy.startup, short, S_IRUGO);MODULE_PARM_DESC (ser,"Set the serial port for the synthesizer (0-based)." );MODULE_PARM_DESC (start,"Start the synthesizer once it is loaded." ); -static int __init dummy_init (void ) -{ -return synth_add (&synth_dummy); -} +module_spk_synth (synth_dummy); -static void __exit dummy_exit(void) -{ -synth_remove (&synth_dummy); -} - -module_init (dummy_init); -module_exit (dummy_exit);MODULE_AUTHOR ("Samuel Thibault <[email protected]>" );MODULE_DESCRIPTION ("Speakup support for text console" );MODULE_LICENSE ("GPL" );
drivers/staging/speakup/speakup_keypc.c +1 -11
@@ -319,18 +319,8 @@ module_param_named(start, synth_keypc.startup, short, S_IRUGO);MODULE_PARM_DESC (port,"Set the port for the synthesizer (override probing)." );MODULE_PARM_DESC (start,"Start the synthesizer once it is loaded." ); -static int __init keypc_init (void ) -{ -return synth_add (&synth_keypc); -} - -static void __exit keypc_exit(void) -{ -synth_remove (&synth_keypc); -} +module_spk_synth (synth_keypc); -module_init (keypc_init); -module_exit (keypc_exit);MODULE_AUTHOR ("David Borowski" );MODULE_DESCRIPTION ("Speakup support for Keynote Gold PC synthesizers" );MODULE_LICENSE ("GPL" );
drivers/staging/speakup/speakup_ltlk.c +1 -11
@@ -175,18 +175,8 @@ module_param_named(start, synth_ltlk.startup, short, S_IRUGO);MODULE_PARM_DESC (ser,"Set the serial port for the synthesizer (0-based)." );MODULE_PARM_DESC (start,"Start the synthesizer once it is loaded." ); -static int __init ltlk_init (void ) -{ -return synth_add (&synth_ltlk); -} - -static void __exit ltlk_exit(void) -{ -synth_remove (&synth_ltlk); -} +module_spk_synth (synth_ltlk); -module_init (ltlk_init); -module_exit (ltlk_exit);MODULE_AUTHOR ("Kirk Reiser <[email protected]>" );MODULE_AUTHOR ("David Borowski" );MODULE_DESCRIPTION ("Speakup support for DoubleTalk LT/LiteTalk synthesizers" );
drivers/staging/speakup/speakup_soft.c +1 -12
@@ -350,19 +350,8 @@ module_param_named(start, synth_soft.startup, short, S_IRUGO);MODULE_PARM_DESC (start,"Start the synthesizer once it is loaded." ); +module_spk_synth (synth_soft); -static int __init soft_init (void ) -{ -return synth_add (&synth_soft); -} - -static void __exit soft_exit(void) -{ -synth_remove (&synth_soft); -} - -module_init (soft_init); -module_exit (soft_exit);MODULE_AUTHOR ("Kirk Reiser <[email protected]>" );MODULE_DESCRIPTION ("Speakup userspace software synthesizer support" );MODULE_LICENSE ("GPL" );
drivers/staging/speakup/speakup_spkout.c +1 -11
@@ -146,18 +146,8 @@ module_param_named(start, synth_spkout.startup, short, S_IRUGO);MODULE_PARM_DESC (ser,"Set the serial port for the synthesizer (0-based)." );MODULE_PARM_DESC (start,"Start the synthesizer once it is loaded." ); -static int __init spkout_init (void ) -{ -return synth_add (&synth_spkout); -} - -static void __exit spkout_exit(void) -{ -synth_remove (&synth_spkout); -} +module_spk_synth (synth_spkout); -module_init (spkout_init); -module_exit (spkout_exit);MODULE_AUTHOR ("Kirk Reiser <[email protected]>" );MODULE_AUTHOR ("David Borowski" );MODULE_DESCRIPTION ("Speakup support for Speak Out synthesizers" );
drivers/staging/speakup/speakup_txprt.c +1 -11
@@ -127,18 +127,8 @@ module_param_named(start, synth_txprt.startup, short, S_IRUGO);MODULE_PARM_DESC (ser,"Set the serial port for the synthesizer (0-based)." );MODULE_PARM_DESC (start,"Start the synthesizer once it is loaded." ); -static int __init txprt_init (void ) -{ -return synth_add (&synth_txprt); -} +module_spk_synth (synth_txprt); -static void __exit txprt_exit(void) -{ -synth_remove (&synth_txprt); -} - -module_init (txprt_init); -module_exit (txprt_exit);MODULE_AUTHOR ("Kirk Reiser <[email protected]>" );MODULE_AUTHOR ("David Borowski" );MODULE_DESCRIPTION ("Speakup support for Transport synthesizers" );
Signature · 1 line
1.9.1