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