Commit | Line | Data |
---|---|---|
683263a5 JC |
1 | // SPDX-License-Identifier: GPL-2.0-only |
2 | /* | |
3 | * Kernel module for testing dynamic_debug | |
4 | * | |
5 | * Authors: | |
6 | * Jim Cromie <jim.cromie@gmail.com> | |
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 <jim.cromie@gmail.com>"); | |
70 | MODULE_LICENSE("GPL"); |