Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * linux/include/linux/sunrpc/debug.h
0004  *
0005  * Debugging support for sunrpc module
0006  *
0007  * Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de>
0008  */
0009 #ifndef _LINUX_SUNRPC_DEBUG_H_
0010 #define _LINUX_SUNRPC_DEBUG_H_
0011 
0012 #include <uapi/linux/sunrpc/debug.h>
0013 
0014 /*
0015  * Debugging macros etc
0016  */
0017 #if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
0018 extern unsigned int     rpc_debug;
0019 extern unsigned int     nfs_debug;
0020 extern unsigned int     nfsd_debug;
0021 extern unsigned int     nlm_debug;
0022 #endif
0023 
0024 #define dprintk(fmt, ...)                       \
0025     dfprintk(FACILITY, fmt, ##__VA_ARGS__)
0026 #define dprintk_cont(fmt, ...)                      \
0027     dfprintk_cont(FACILITY, fmt, ##__VA_ARGS__)
0028 #define dprintk_rcu(fmt, ...)                       \
0029     dfprintk_rcu(FACILITY, fmt, ##__VA_ARGS__)
0030 #define dprintk_rcu_cont(fmt, ...)                  \
0031     dfprintk_rcu_cont(FACILITY, fmt, ##__VA_ARGS__)
0032 
0033 #undef ifdebug
0034 #if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
0035 # define ifdebug(fac)       if (unlikely(rpc_debug & RPCDBG_##fac))
0036 
0037 # define dfprintk(fac, fmt, ...)                    \
0038 do {                                    \
0039     ifdebug(fac)                            \
0040         printk(KERN_DEFAULT fmt, ##__VA_ARGS__);        \
0041 } while (0)
0042 
0043 # define dfprintk_cont(fac, fmt, ...)                   \
0044 do {                                    \
0045     ifdebug(fac)                            \
0046         printk(KERN_CONT fmt, ##__VA_ARGS__);           \
0047 } while (0)
0048 
0049 # define dfprintk_rcu(fac, fmt, ...)                    \
0050 do {                                    \
0051     ifdebug(fac) {                          \
0052         rcu_read_lock();                    \
0053         printk(KERN_DEFAULT fmt, ##__VA_ARGS__);        \
0054         rcu_read_unlock();                  \
0055     }                               \
0056 } while (0)
0057 
0058 # define dfprintk_rcu_cont(fac, fmt, ...)               \
0059 do {                                    \
0060     ifdebug(fac) {                          \
0061         rcu_read_lock();                    \
0062         printk(KERN_CONT fmt, ##__VA_ARGS__);           \
0063         rcu_read_unlock();                  \
0064     }                               \
0065 } while (0)
0066 
0067 # define RPC_IFDEBUG(x)     x
0068 #else
0069 # define ifdebug(fac)       if (0)
0070 # define dfprintk(fac, fmt, ...)    do {} while (0)
0071 # define dfprintk_cont(fac, fmt, ...)   do {} while (0)
0072 # define dfprintk_rcu(fac, fmt, ...)    do {} while (0)
0073 # define RPC_IFDEBUG(x)
0074 #endif
0075 
0076 /*
0077  * Sysctl interface for RPC debugging
0078  */
0079 
0080 struct rpc_clnt;
0081 struct rpc_xprt;
0082 
0083 #if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
0084 void        rpc_register_sysctl(void);
0085 void        rpc_unregister_sysctl(void);
0086 void        sunrpc_debugfs_init(void);
0087 void        sunrpc_debugfs_exit(void);
0088 void        rpc_clnt_debugfs_register(struct rpc_clnt *);
0089 void        rpc_clnt_debugfs_unregister(struct rpc_clnt *);
0090 void        rpc_xprt_debugfs_register(struct rpc_xprt *);
0091 void        rpc_xprt_debugfs_unregister(struct rpc_xprt *);
0092 #else
0093 static inline void
0094 sunrpc_debugfs_init(void)
0095 {
0096     return;
0097 }
0098 
0099 static inline void
0100 sunrpc_debugfs_exit(void)
0101 {
0102     return;
0103 }
0104 
0105 static inline void
0106 rpc_clnt_debugfs_register(struct rpc_clnt *clnt)
0107 {
0108     return;
0109 }
0110 
0111 static inline void
0112 rpc_clnt_debugfs_unregister(struct rpc_clnt *clnt)
0113 {
0114     return;
0115 }
0116 
0117 static inline void
0118 rpc_xprt_debugfs_register(struct rpc_xprt *xprt)
0119 {
0120     return;
0121 }
0122 
0123 static inline void
0124 rpc_xprt_debugfs_unregister(struct rpc_xprt *xprt)
0125 {
0126     return;
0127 }
0128 #endif
0129 
0130 #endif /* _LINUX_SUNRPC_DEBUG_H_ */