| /* 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_ */ |