1
2
3
4
5
6
7
8#ifndef _LINUX_SUNRPC_DEBUG_H_
9#define _LINUX_SUNRPC_DEBUG_H_
10
11#include <uapi/linux/sunrpc/debug.h>
12
13
14
15
16#if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
17extern unsigned int rpc_debug;
18extern unsigned int nfs_debug;
19extern unsigned int nfsd_debug;
20extern 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, ...) \
37do { \
38 ifdebug(fac) \
39 printk(KERN_DEFAULT fmt, ##__VA_ARGS__); \
40} while (0)
41
42# define dfprintk_cont(fac, fmt, ...) \
43do { \
44 ifdebug(fac) \
45 printk(KERN_CONT fmt, ##__VA_ARGS__); \
46} while (0)
47
48# define dfprintk_rcu(fac, fmt, ...) \
49do { \
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, ...) \
58do { \
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
77
78
79struct rpc_clnt;
80struct rpc_xprt;
81
82#if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
83void rpc_register_sysctl(void);
84void rpc_unregister_sysctl(void);
85void sunrpc_debugfs_init(void);
86void sunrpc_debugfs_exit(void);
87void rpc_clnt_debugfs_register(struct rpc_clnt *);
88void rpc_clnt_debugfs_unregister(struct rpc_clnt *);
89void rpc_xprt_debugfs_register(struct rpc_xprt *);
90void rpc_xprt_debugfs_unregister(struct rpc_xprt *);
91#else
92static inline void
93sunrpc_debugfs_init(void)
94{
95 return;
96}
97
98static inline void
99sunrpc_debugfs_exit(void)
100{
101 return;
102}
103
104static inline void
105rpc_clnt_debugfs_register(struct rpc_clnt *clnt)
106{
107 return;
108}
109
110static inline void
111rpc_clnt_debugfs_unregister(struct rpc_clnt *clnt)
112{
113 return;
114}
115
116static inline void
117rpc_xprt_debugfs_register(struct rpc_xprt *xprt)
118{
119 return;
120}
121
122static inline void
123rpc_xprt_debugfs_unregister(struct rpc_xprt *xprt)
124{
125 return;
126}
127#endif
128
129#endif
130