at v4.11 2.8 kB view raw
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) 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 * Sysctl interface for RPC debugging 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 /* _LINUX_SUNRPC_DEBUG_H_ */