| /* SPDX-License-Identifier: GPL-2.0 */ | |
| /* | |
| * linux/include/linux/sunrpc/debug.h | |
| * | |
| * Debugging support for sunrpc module | |
| * | |
| * Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de> | |
| */ | |
| #ifndef _LINUX_SUNRPC_DEBUG_H_ | |
| #define _LINUX_SUNRPC_DEBUG_H_ | |
| #include <uapi/linux/sunrpc/debug.h> | |
| /* | |
| * Debugging macros etc | |
| */ | |
| #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) | |
| extern unsigned int rpc_debug; | |
| extern unsigned int nfs_debug; | |
| extern unsigned int nfsd_debug; | |
| extern unsigned int nlm_debug; | |
| #endif | |
| #define dprintk(fmt, ...) \ | |
| dfprintk(FACILITY, fmt, ##__VA_ARGS__) | |
| #define dprintk_cont(fmt, ...) \ | |
| dfprintk_cont(FACILITY, fmt, ##__VA_ARGS__) | |
| #define dprintk_rcu(fmt, ...) \ | |
| dfprintk_rcu(FACILITY, fmt, ##__VA_ARGS__) | |
| #define dprintk_rcu_cont(fmt, ...) \ | |
| dfprintk_rcu_cont(FACILITY, fmt, ##__VA_ARGS__) | |
| #undef ifdebug | |
| #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) | |
| # define ifdebug(fac) if (unlikely(rpc_debug & RPCDBG_##fac)) | |
| # define dfprintk(fac, fmt, ...) \ | |
| do { \ | |
| ifdebug(fac) \ | |
| printk(KERN_DEFAULT fmt, ##__VA_ARGS__); \ | |
| } while (0) | |
| # define dfprintk_cont(fac, fmt, ...) \ | |
| do { \ | |
| ifdebug(fac) \ | |
| printk(KERN_CONT fmt, ##__VA_ARGS__); \ | |
| } while (0) | |
| # define dfprintk_rcu(fac, fmt, ...) \ | |
| do { \ | |
| ifdebug(fac) { \ | |
| rcu_read_lock(); \ | |
| printk(KERN_DEFAULT fmt, ##__VA_ARGS__); \ | |
| rcu_read_unlock(); \ | |
| } \ | |
| } while (0) | |
| # define dfprintk_rcu_cont(fac, fmt, ...) \ | |
| do { \ | |
| ifdebug(fac) { \ | |
| rcu_read_lock(); \ | |
| printk(KERN_CONT fmt, ##__VA_ARGS__); \ | |
| rcu_read_unlock(); \ | |
| } \ | |
| } while (0) | |
| # define RPC_IFDEBUG(x) x | |
| #else | |
| # define ifdebug(fac) if (0) | |
| # define dfprintk(fac, fmt, ...) do {} while (0) | |
| # define dfprintk_cont(fac, fmt, ...) do {} while (0) | |
| # define dfprintk_rcu(fac, fmt, ...) do {} while (0) | |
| # define RPC_IFDEBUG(x) | |
| #endif | |
| /* | |
| * Sysctl interface for RPC debugging | |
| */ | |
| struct rpc_clnt; | |
| struct rpc_xprt; | |
| #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) | |
| void rpc_register_sysctl(void); | |
| void rpc_unregister_sysctl(void); | |
| void sunrpc_debugfs_init(void); | |
| void sunrpc_debugfs_exit(void); | |
| void rpc_clnt_debugfs_register(struct rpc_clnt *); | |
| void rpc_clnt_debugfs_unregister(struct rpc_clnt *); | |
| void rpc_xprt_debugfs_register(struct rpc_xprt *); | |
| void rpc_xprt_debugfs_unregister(struct rpc_xprt *); | |
| #else | |
| static inline void | |
| sunrpc_debugfs_init(void) | |
| { | |
| return; | |
| } | |
| static inline void | |
| sunrpc_debugfs_exit(void) | |
| { | |
| return; | |
| } | |
| static inline void | |
| rpc_clnt_debugfs_register(struct rpc_clnt *clnt) | |
| { | |
| return; | |
| } | |
| static inline void | |
| rpc_clnt_debugfs_unregister(struct rpc_clnt *clnt) | |
| { | |
| return; | |
| } | |
| static inline void | |
| rpc_xprt_debugfs_register(struct rpc_xprt *xprt) | |
| { | |
| return; | |
| } | |
| static inline void | |
| rpc_xprt_debugfs_unregister(struct rpc_xprt *xprt) | |
| { | |
| return; | |
| } | |
| #endif | |
| #endif /* _LINUX_SUNRPC_DEBUG_H_ */ |