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