xref: /linux-6.15/lib/test_dynamic_debug.c (revision 683263a5)
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, &param_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