xref: /linux-6.15/include/linux/sunrpc/debug.h (revision bbb03029)
1 /*
2  * linux/include/linux/sunrpc/debug.h
3  *
4  * Debugging support for sunrpc module
5  *
6  * Copyright (C) 1996, Olaf Kirch <[email protected]>
7  */
8 #ifndef _LINUX_SUNRPC_DEBUG_H_
9 #define _LINUX_SUNRPC_DEBUG_H_
10 
11 #include <uapi/linux/sunrpc/debug.h>
12 
13 /*
14  * Debugging macros etc
15  */
16 #if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
17 extern unsigned int		rpc_debug;
18 extern unsigned int		nfs_debug;
19 extern unsigned int		nfsd_debug;
20 extern unsigned int		nlm_debug;
21 #endif
22 
23 #define dprintk(fmt, ...)						\
24 	dfprintk(FACILITY, fmt, ##__VA_ARGS__)
25 #define dprintk_cont(fmt, ...)						\
26 	dfprintk_cont(FACILITY, fmt, ##__VA_ARGS__)
27 #define dprintk_rcu(fmt, ...)						\
28 	dfprintk_rcu(FACILITY, fmt, ##__VA_ARGS__)
29 #define dprintk_rcu_cont(fmt, ...)					\
30 	dfprintk_rcu_cont(FACILITY, fmt, ##__VA_ARGS__)
31 
32 #undef ifdebug
33 #if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
34 # define ifdebug(fac)		if (unlikely(rpc_debug & RPCDBG_##fac))
35 
36 # define dfprintk(fac, fmt, ...)					\
37 do {									\
38 	ifdebug(fac)							\
39 		printk(KERN_DEFAULT fmt, ##__VA_ARGS__);		\
40 } while (0)
41 
42 # define dfprintk_cont(fac, fmt, ...)					\
43 do {									\
44 	ifdebug(fac)							\
45 		printk(KERN_CONT fmt, ##__VA_ARGS__);			\
46 } while (0)
47 
48 # define dfprintk_rcu(fac, fmt, ...)					\
49 do {									\
50 	ifdebug(fac) {							\
51 		rcu_read_lock();					\
52 		printk(KERN_DEFAULT fmt, ##__VA_ARGS__);		\
53 		rcu_read_unlock();					\
54 	}								\
55 } while (0)
56 
57 # define dfprintk_rcu_cont(fac, fmt, ...)				\
58 do {									\
59 	ifdebug(fac) {							\
60 		rcu_read_lock();					\
61 		printk(KERN_CONT fmt, ##__VA_ARGS__);			\
62 		rcu_read_unlock();					\
63 	}								\
64 } while (0)
65 
66 # define RPC_IFDEBUG(x)		x
67 #else
68 # define ifdebug(fac)		if (0)
69 # define dfprintk(fac, fmt, ...)	do {} while (0)
70 # define dfprintk_cont(fac, fmt, ...)	do {} while (0)
71 # define dfprintk_rcu(fac, fmt, ...)	do {} while (0)
72 # define RPC_IFDEBUG(x)
73 #endif
74 
75 /*
76  * Sysctl interface for RPC debugging
77  */
78 
79 struct rpc_clnt;
80 struct rpc_xprt;
81 
82 #if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
83 void		rpc_register_sysctl(void);
84 void		rpc_unregister_sysctl(void);
85 void		sunrpc_debugfs_init(void);
86 void		sunrpc_debugfs_exit(void);
87 void		rpc_clnt_debugfs_register(struct rpc_clnt *);
88 void		rpc_clnt_debugfs_unregister(struct rpc_clnt *);
89 void		rpc_xprt_debugfs_register(struct rpc_xprt *);
90 void		rpc_xprt_debugfs_unregister(struct rpc_xprt *);
91 #else
92 static inline void
93 sunrpc_debugfs_init(void)
94 {
95 	return;
96 }
97 
98 static inline void
99 sunrpc_debugfs_exit(void)
100 {
101 	return;
102 }
103 
104 static inline void
105 rpc_clnt_debugfs_register(struct rpc_clnt *clnt)
106 {
107 	return;
108 }
109 
110 static inline void
111 rpc_clnt_debugfs_unregister(struct rpc_clnt *clnt)
112 {
113 	return;
114 }
115 
116 static inline void
117 rpc_xprt_debugfs_register(struct rpc_xprt *xprt)
118 {
119 	return;
120 }
121 
122 static inline void
123 rpc_xprt_debugfs_unregister(struct rpc_xprt *xprt)
124 {
125 	return;
126 }
127 #endif
128 
129 #endif /* _LINUX_SUNRPC_DEBUG_H_ */
130