Linux Audio

Check our new training course

Linux BSP development engineering services

Need help to port Linux and bootloaders to your hardware?
Loading...
v6.2
  1/* SPDX-License-Identifier: GPL-2.0-or-later */
  2/*
  3 *
  4 *   Copyright (c) International Business Machines  Corp., 2000,2002
  5 *   Modified by Steve French (sfrench@us.ibm.com)
  6 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  7
  8#ifndef _H_CIFS_DEBUG
  9#define _H_CIFS_DEBUG
 10
 11#ifdef pr_fmt
 12#undef pr_fmt
 13#endif
 14
 15#define pr_fmt(fmt) "CIFS: " fmt
 16
 17void cifs_dump_mem(char *label, void *data, int length);
 18void cifs_dump_detail(void *buf, struct TCP_Server_Info *ptcp_info);
 
 
 19void cifs_dump_mids(struct TCP_Server_Info *);
 20extern bool traceSMB;		/* flag which enables the function below */
 21void dump_smb(void *, int);
 
 
 
 22#define CIFS_INFO	0x01
 23#define CIFS_RC		0x02
 24#define CIFS_TIMER	0x04
 25
 26#define VFS 1
 27#define FYI 2
 28extern int cifsFYI;
 29#ifdef CONFIG_CIFS_DEBUG2
 30#define NOISY 4
 31#else
 32#define NOISY 0
 33#endif
 34#define ONCE 8
 35
 36/*
 37 *	debug ON
 38 *	--------
 39 */
 40#ifdef CONFIG_CIFS_DEBUG
 41
 42
 43/*
 44 * When adding tracepoints and debug messages we have various choices.
 45 * Some considerations:
 46 *
 47 * Use cifs_dbg(VFS, ...) for things we always want logged, and the user to see
 48 *     cifs_info(...) slightly less important, admin can filter via loglevel > 6
 49 *     cifs_dbg(FYI, ...) minor debugging messages, off by default
 50 *     trace_smb3_*  ftrace functions are preferred for complex debug messages
 51 *                 intended for developers or experienced admins, off by default
 52 */
 53
 54/* Information level messages, minor events */
 55#define cifs_info_func(ratefunc, fmt, ...)				\
 56	pr_info_ ## ratefunc(fmt, ##__VA_ARGS__)
 57
 58#define cifs_info(fmt, ...)						\
 59	cifs_info_func(ratelimited, fmt, ##__VA_ARGS__)
 60
 61/* information message: e.g., configuration, major event */
 62#define cifs_dbg_func(ratefunc, type, fmt, ...)				\
 
 63do {									\
 64	if ((type) & FYI && cifsFYI & CIFS_INFO) {			\
 65		pr_debug_ ## ratefunc("%s: " fmt,			\
 66				      __FILE__, ##__VA_ARGS__);		\
 67	} else if ((type) & VFS) {					\
 68		pr_err_ ## ratefunc("VFS: " fmt, ##__VA_ARGS__);	\
 69	} else if ((type) & NOISY && (NOISY != 0)) {			\
 70		pr_debug_ ## ratefunc(fmt, ##__VA_ARGS__);		\
 71	}								\
 72} while (0)
 73
 74#define cifs_dbg(type, fmt, ...)					\
 75do {									\
 76	if ((type) & ONCE)						\
 77		cifs_dbg_func(once, type, fmt, ##__VA_ARGS__);		\
 78	else								\
 79		cifs_dbg_func(ratelimited, type, fmt, ##__VA_ARGS__);	\
 80} while (0)
 81
 82#define cifs_server_dbg_func(ratefunc, type, fmt, ...)			\
 83do {									\
 84	const char *sn = "";						\
 85	if (server && server->hostname)					\
 86		sn = server->hostname;					\
 87	if ((type) & FYI && cifsFYI & CIFS_INFO) {			\
 88		pr_debug_ ## ratefunc("%s: \\\\%s " fmt,		\
 89				      __FILE__, sn, ##__VA_ARGS__);	\
 90	} else if ((type) & VFS) {					\
 91		pr_err_ ## ratefunc("VFS: \\\\%s " fmt,			\
 92				    sn, ##__VA_ARGS__);			\
 93	} else if ((type) & NOISY && (NOISY != 0)) {			\
 94		pr_debug_ ## ratefunc("\\\\%s " fmt,			\
 95				      sn, ##__VA_ARGS__);		\
 96	}								\
 97} while (0)
 98
 99#define cifs_server_dbg(type, fmt, ...)					\
100do {									\
101	if ((type) & ONCE)						\
102		cifs_server_dbg_func(once, type, fmt, ##__VA_ARGS__);	\
103	else								\
104		cifs_server_dbg_func(ratelimited, type, fmt,		\
105				     ##__VA_ARGS__);			\
106} while (0)
107
108#define cifs_tcon_dbg_func(ratefunc, type, fmt, ...)			\
109do {									\
110	const char *tn = "";						\
111	if (tcon && tcon->tree_name)					\
112		tn = tcon->tree_name;					\
113	if ((type) & FYI && cifsFYI & CIFS_INFO) {			\
114		pr_debug_ ## ratefunc("%s: %s "	fmt,			\
115				      __FILE__, tn, ##__VA_ARGS__);	\
116	} else if ((type) & VFS) {					\
117		pr_err_ ## ratefunc("VFS: %s " fmt, tn, ##__VA_ARGS__);	\
118	} else if ((type) & NOISY && (NOISY != 0)) {			\
119		pr_debug_ ## ratefunc("%s " fmt, tn, ##__VA_ARGS__);	\
120	}								\
121} while (0)
122
123#define cifs_tcon_dbg(type, fmt, ...)					\
124do {									\
125	if ((type) & ONCE)						\
126		cifs_tcon_dbg_func(once, type, fmt, ##__VA_ARGS__);	\
127	else								\
128		cifs_tcon_dbg_func(ratelimited, type, fmt,		\
129				   ##__VA_ARGS__);			\
130} while (0)
131
132/*
133 *	debug OFF
134 *	---------
135 */
136#else		/* _CIFS_DEBUG */
137#define cifs_dbg(type, fmt, ...)					\
138do {									\
139	if (0)								\
140		pr_debug(fmt, ##__VA_ARGS__);				\
141} while (0)
142
143#define cifs_server_dbg(type, fmt, ...)					\
144do {									\
145	if (0)								\
146		pr_debug("\\\\%s " fmt,					\
147			 server->hostname, ##__VA_ARGS__);		\
148} while (0)
149
150#define cifs_tcon_dbg(type, fmt, ...)					\
151do {									\
152	if (0)								\
153		pr_debug("%s " fmt, tcon->tree_name, ##__VA_ARGS__);	\
154} while (0)
155
156#define cifs_info(fmt, ...)						\
157	pr_info(fmt, ##__VA_ARGS__)
158#endif
159
160#endif				/* _H_CIFS_DEBUG */
v3.1
 
 1/*
 2 *
 3 *   Copyright (c) International Business Machines  Corp., 2000,2002
 4 *   Modified by Steve French (sfrench@us.ibm.com)
 5 *
 6 *   This program is free software;  you can redistribute it and/or modify
 7 *   it under the terms of the GNU General Public License as published by
 8 *   the Free Software Foundation; either version 2 of the License, or
 9 *   (at your option) any later version.
10 *
11 *   This program is distributed in the hope that it will be useful,
12 *   but WITHOUT ANY WARRANTY;  without even the implied warranty of
13 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
14 *   the GNU General Public License for more details.
15 *
16 *   You should have received a copy of the GNU General Public License
17 *   along with this program;  if not, write to the Free Software
18 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 *
20*/
21#define CIFS_DEBUG		/* BB temporary */
22
23#ifndef _H_CIFS_DEBUG
24#define _H_CIFS_DEBUG
25
 
 
 
 
 
 
26void cifs_dump_mem(char *label, void *data, int length);
27#ifdef CONFIG_CIFS_DEBUG2
28#define DBG2 2
29void cifs_dump_detail(struct smb_hdr *);
30void cifs_dump_mids(struct TCP_Server_Info *);
31#else
32#define DBG2 0
33#endif
34extern int traceSMB;		/* flag which enables the function below */
35void dump_smb(struct smb_hdr *, int);
36#define CIFS_INFO	0x01
37#define CIFS_RC		0x02
38#define CIFS_TIMER	0x04
39
 
 
 
 
 
 
 
 
 
 
40/*
41 *	debug ON
42 *	--------
43 */
44#ifdef CIFS_DEBUG
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
46/* information message: e.g., configuration, major event */
47extern int cifsFYI;
48#define cifsfyi(fmt, arg...)						\
49do {									\
50	if (cifsFYI & CIFS_INFO)					\
51		printk(KERN_DEBUG "%s: " fmt "\n", __FILE__, ##arg);	\
 
 
 
 
 
 
52} while (0)
53
54#define cFYI(set, fmt, arg...)			\
55do {						\
56	if (set)				\
57		cifsfyi(fmt, ##arg);		\
 
 
58} while (0)
59
60#define cifswarn(fmt, arg...)			\
61	printk(KERN_WARNING fmt "\n", ##arg)
62
63/* debug event message: */
64extern int cifsERROR;
 
 
 
 
 
 
 
 
 
 
 
65
66#define cEVENT(fmt, arg...)						\
67do {									\
68	if (cifsERROR)							\
69		printk(KERN_EVENT "%s: " fmt "\n", __FILE__, ##arg);	\
 
 
 
70} while (0)
71
72/* error event message: e.g., i/o error */
73#define cifserror(fmt, arg...)					\
74do {								\
75	if (cifsERROR)						\
76		printk(KERN_ERR "CIFS VFS: " fmt "\n", ##arg);	\
 
 
 
 
 
 
 
 
77} while (0)
78
79#define cERROR(set, fmt, arg...)		\
80do {						\
81	if (set)				\
82		cifserror(fmt, ##arg);		\
 
 
 
83} while (0)
84
85/*
86 *	debug OFF
87 *	---------
88 */
89#else		/* _CIFS_DEBUG */
90#define cERROR(set, fmt, arg...)
91#define cEVENT(fmt, arg...)
92#define cFYI(set, fmt, arg...)
93#define cifserror(fmt, arg...)
94#endif		/* _CIFS_DEBUG */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
96#endif				/* _H_CIFS_DEBUG */