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