0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef _LINUX_SUNRPC_DEBUG_H_
0010 #define _LINUX_SUNRPC_DEBUG_H_
0011
0012 #include <uapi/linux/sunrpc/debug.h>
0013
0014
0015
0016
0017 #if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
0018 extern unsigned int rpc_debug;
0019 extern unsigned int nfs_debug;
0020 extern unsigned int nfsd_debug;
0021 extern unsigned int nlm_debug;
0022 #endif
0023
0024 #define dprintk(fmt, ...) \
0025 dfprintk(FACILITY, fmt, ##__VA_ARGS__)
0026 #define dprintk_cont(fmt, ...) \
0027 dfprintk_cont(FACILITY, fmt, ##__VA_ARGS__)
0028 #define dprintk_rcu(fmt, ...) \
0029 dfprintk_rcu(FACILITY, fmt, ##__VA_ARGS__)
0030 #define dprintk_rcu_cont(fmt, ...) \
0031 dfprintk_rcu_cont(FACILITY, fmt, ##__VA_ARGS__)
0032
0033 #undef ifdebug
0034 #if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
0035 # define ifdebug(fac) if (unlikely(rpc_debug & RPCDBG_##fac))
0036
0037 # define dfprintk(fac, fmt, ...) \
0038 do { \
0039 ifdebug(fac) \
0040 printk(KERN_DEFAULT fmt, ##__VA_ARGS__); \
0041 } while (0)
0042
0043 # define dfprintk_cont(fac, fmt, ...) \
0044 do { \
0045 ifdebug(fac) \
0046 printk(KERN_CONT fmt, ##__VA_ARGS__); \
0047 } while (0)
0048
0049 # define dfprintk_rcu(fac, fmt, ...) \
0050 do { \
0051 ifdebug(fac) { \
0052 rcu_read_lock(); \
0053 printk(KERN_DEFAULT fmt, ##__VA_ARGS__); \
0054 rcu_read_unlock(); \
0055 } \
0056 } while (0)
0057
0058 # define dfprintk_rcu_cont(fac, fmt, ...) \
0059 do { \
0060 ifdebug(fac) { \
0061 rcu_read_lock(); \
0062 printk(KERN_CONT fmt, ##__VA_ARGS__); \
0063 rcu_read_unlock(); \
0064 } \
0065 } while (0)
0066
0067 # define RPC_IFDEBUG(x) x
0068 #else
0069 # define ifdebug(fac) if (0)
0070 # define dfprintk(fac, fmt, ...) do {} while (0)
0071 # define dfprintk_cont(fac, fmt, ...) do {} while (0)
0072 # define dfprintk_rcu(fac, fmt, ...) do {} while (0)
0073 # define RPC_IFDEBUG(x)
0074 #endif
0075
0076
0077
0078
0079
0080 struct rpc_clnt;
0081 struct rpc_xprt;
0082
0083 #if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
0084 void rpc_register_sysctl(void);
0085 void rpc_unregister_sysctl(void);
0086 void sunrpc_debugfs_init(void);
0087 void sunrpc_debugfs_exit(void);
0088 void rpc_clnt_debugfs_register(struct rpc_clnt *);
0089 void rpc_clnt_debugfs_unregister(struct rpc_clnt *);
0090 void rpc_xprt_debugfs_register(struct rpc_xprt *);
0091 void rpc_xprt_debugfs_unregister(struct rpc_xprt *);
0092 #else
0093 static inline void
0094 sunrpc_debugfs_init(void)
0095 {
0096 return;
0097 }
0098
0099 static inline void
0100 sunrpc_debugfs_exit(void)
0101 {
0102 return;
0103 }
0104
0105 static inline void
0106 rpc_clnt_debugfs_register(struct rpc_clnt *clnt)
0107 {
0108 return;
0109 }
0110
0111 static inline void
0112 rpc_clnt_debugfs_unregister(struct rpc_clnt *clnt)
0113 {
0114 return;
0115 }
0116
0117 static inline void
0118 rpc_xprt_debugfs_register(struct rpc_xprt *xprt)
0119 {
0120 return;
0121 }
0122
0123 static inline void
0124 rpc_xprt_debugfs_unregister(struct rpc_xprt *xprt)
0125 {
0126 return;
0127 }
0128 #endif
0129
0130 #endif