1 /* 2 * linux/include/linux/sunrpc/debug.h 3 * 4 * Debugging support for sunrpc module 5 * 6 * Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de> 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(args...) dfprintk(FACILITY, ## args) 24 #define dprintk_rcu(args...) dfprintk_rcu(FACILITY, ## args) 25 26 #undef ifdebug 27 #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) 28 # define ifdebug(fac) if (unlikely(rpc_debug & RPCDBG_##fac)) 29 30 # define dfprintk(fac, args...) \ 31 do { \ 32 ifdebug(fac) \ 33 printk(KERN_DEFAULT args); \ 34 } while (0) 35 36 # define dfprintk_rcu(fac, args...) \ 37 do { \ 38 ifdebug(fac) { \ 39 rcu_read_lock(); \ 40 printk(KERN_DEFAULT args); \ 41 rcu_read_unlock(); \ 42 } \ 43 } while (0) 44 45 # define RPC_IFDEBUG(x) x 46 #else 47 # define ifdebug(fac) if (0) 48 # define dfprintk(fac, args...) do {} while (0) 49 # define dfprintk_rcu(fac, args...) do {} while (0) 50 # define RPC_IFDEBUG(x) 51 #endif 52 53 /* 54 * Sysctl interface for RPC debugging 55 */ 56 57 struct rpc_clnt; 58 struct rpc_xprt; 59 60 #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) 61 void rpc_register_sysctl(void); 62 void rpc_unregister_sysctl(void); 63 void sunrpc_debugfs_init(void); 64 void sunrpc_debugfs_exit(void); 65 void rpc_clnt_debugfs_register(struct rpc_clnt *); 66 void rpc_clnt_debugfs_unregister(struct rpc_clnt *); 67 void rpc_xprt_debugfs_register(struct rpc_xprt *); 68 void rpc_xprt_debugfs_unregister(struct rpc_xprt *); 69 #else 70 static inline void 71 sunrpc_debugfs_init(void) 72 { 73 return; 74 } 75 76 static inline void 77 sunrpc_debugfs_exit(void) 78 { 79 return; 80 } 81 82 static inline void 83 rpc_clnt_debugfs_register(struct rpc_clnt *clnt) 84 { 85 return; 86 } 87 88 static inline void 89 rpc_clnt_debugfs_unregister(struct rpc_clnt *clnt) 90 { 91 return; 92 } 93 94 static inline void 95 rpc_xprt_debugfs_register(struct rpc_xprt *xprt) 96 { 97 return; 98 } 99 100 static inline void 101 rpc_xprt_debugfs_unregister(struct rpc_xprt *xprt) 102 { 103 return; 104 } 105 #endif 106 107 #endif /* _LINUX_SUNRPC_DEBUG_H_ */ 108