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
9#ifndef _LINUX_SUNRPC_DEBUG_H_
10#define _LINUX_SUNRPC_DEBUG_H_
11
12#include <linux/config.h>
13
14#include <linux/timer.h>
15#include <linux/tqueue.h>
16
17/*
18 * Enable RPC debugging/profiling.
19 */
20#ifdef CONFIG_SYSCTL
21#define  RPC_DEBUG
22#endif
23/* #define  RPC_PROFILE */
24
25/*
26 * RPC debug facilities
27 */
28#define RPCDBG_XPRT		0x0001
29#define RPCDBG_CALL		0x0002
30#define RPCDBG_DEBUG		0x0004
31#define RPCDBG_NFS		0x0008
32#define RPCDBG_AUTH		0x0010
33#define RPCDBG_PMAP		0x0020
34#define RPCDBG_SCHED		0x0040
35#define RPCDBG_SVCSOCK		0x0100
36#define RPCDBG_SVCDSP		0x0200
37#define RPCDBG_MISC		0x0400
38#define RPCDBG_ALL		0x7fff
39
40#ifdef __KERNEL__
41
42/*
43 * Debugging macros etc
44 */
45#ifdef RPC_DEBUG
46extern unsigned int		rpc_debug;
47extern unsigned int		nfs_debug;
48extern unsigned int		nfsd_debug;
49extern unsigned int		nlm_debug;
50#endif
51
52#define dprintk(args...)	dfprintk(FACILITY, ## args)
53
54#undef ifdebug
55#ifdef RPC_DEBUG
56# define ifdebug(fac)		if (rpc_debug & RPCDBG_##fac)
57# define dfprintk(fac, args...)	do { ifdebug(fac) printk(args); } while(0)
58# define RPC_IFDEBUG(x)		x
59#else
60# define dfprintk(fac, args...)	do ; while (0)
61# define RPC_IFDEBUG(x)
62#endif
63
64#ifdef RPC_PROFILE
65# define pprintk(args...)	printk(## args)
66#else
67# define pprintk(args...)	do ; while (0)
68#endif
69
70/*
71 * Sysctl interface for RPC debugging
72 */
73#ifdef RPC_DEBUG
74void		rpc_register_sysctl(void);
75void		rpc_unregister_sysctl(void);
76#endif
77
78#endif /* __KERNEL__ */
79
80/*
81 * Declarations for the sysctl debug interface, which allows to read or
82 * change the debug flags for rpc, nfs, nfsd, and lockd. Since the sunrpc
83 * module currently registers its sysctl table dynamically, the sysctl path
84 * for module FOO is <CTL_SUNRPC, CTL_FOODEBUG>.
85 */
86#define CTL_SUNRPC	7249	/* arbitrary and hopefully unused */
87
88enum {
89	CTL_RPCDEBUG = 1,
90	CTL_NFSDEBUG,
91	CTL_NFSDDEBUG,
92	CTL_NLMDEBUG,
93};
94
95#endif /* _LINUX_SUNRPC_DEBUG_H_ */
96