1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Kernel module for testing dynamic_debug 4 * 5 * Authors: 6 * Jim Cromie <[email protected]> 7 */ 8 9 #define pr_fmt(fmt) "test_dd: " fmt 10 11 #include <linux/module.h> 12 13 static void do_prints(void); /* device under test */ 14 15 /* run tests by reading or writing sysfs node */ 16 17 static int param_set_do_prints(const char *instr, const struct kernel_param *kp) 18 { 19 do_prints(); 20 return 0; 21 } 22 23 static int param_get_do_prints(char *buffer, const struct kernel_param *kp) 24 { 25 do_prints(); 26 return scnprintf(buffer, PAGE_SIZE, "did do_prints\n"); 27 } 28 29 static const struct kernel_param_ops param_ops_do_prints = { 30 .set = param_set_do_prints, 31 .get = param_get_do_prints, 32 }; 33 34 module_param_cb(do_prints, ¶m_ops_do_prints, NULL, 0600); 35 36 static void do_alpha(void) 37 { 38 pr_debug("do alpha\n"); 39 } 40 static void do_beta(void) 41 { 42 pr_debug("do beta\n"); 43 } 44 45 static void do_prints(void) 46 { 47 do_alpha(); 48 do_beta(); 49 } 50 51 static int __init test_dynamic_debug_init(void) 52 { 53 pr_debug("init start\n"); 54 55 do_prints(); 56 57 pr_debug("init done\n"); 58 return 0; 59 } 60 61 static void __exit test_dynamic_debug_exit(void) 62 { 63 pr_debug("exiting\n"); 64 } 65 66 module_init(test_dynamic_debug_init); 67 module_exit(test_dynamic_debug_exit); 68 69 MODULE_AUTHOR("Jim Cromie <[email protected]>"); 70 MODULE_LICENSE("GPL"); 71