blob: c611ca2339d71e982da848bf1a5c1432d691e53c [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
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*/
Linus Torvalds1da177e2005-04-16 15:20:36 -070021
22#ifndef _H_CIFS_DEBUG
23#define _H_CIFS_DEBUG
24
25void cifs_dump_mem(char *label, void *data, int length);
Pavel Shilovskyd4e48542012-03-23 14:28:02 -040026void cifs_dump_detail(void *);
Steve French39798772006-05-31 22:40:51 +000027void cifs_dump_mids(struct TCP_Server_Info *);
Kees Cook14042972016-03-17 14:22:54 -070028extern bool traceSMB; /* flag which enables the function below */
Pavel Shilovsky792af7b2012-03-23 14:28:02 -040029void dump_smb(void *, int);
Steve French1047abc2005-10-11 19:58:06 -070030#define CIFS_INFO 0x01
Steve French13cd4b72010-10-07 18:46:32 +000031#define CIFS_RC 0x02
Steve French1047abc2005-10-11 19:58:06 -070032#define CIFS_TIMER 0x04
Linus Torvalds1da177e2005-04-16 15:20:36 -070033
Joe Perchesf96637b2013-05-04 22:12:25 -050034#define VFS 1
35#define FYI 2
Joe Perchesbde98192012-12-05 12:42:47 -080036extern int cifsFYI;
Joe Perchesf96637b2013-05-04 22:12:25 -050037#ifdef CONFIG_CIFS_DEBUG2
38#define NOISY 4
39#else
40#define NOISY 0
41#endif
Joe Perchesbde98192012-12-05 12:42:47 -080042
Linus Torvalds1da177e2005-04-16 15:20:36 -070043/*
44 * debug ON
45 * --------
46 */
Joe Perches471b1f92012-12-05 12:42:58 -080047#ifdef CONFIG_CIFS_DEBUG
Linus Torvalds1da177e2005-04-16 15:20:36 -070048
Joe Perchesf96637b2013-05-04 22:12:25 -050049__printf(1, 2) void cifs_vfs_err(const char *fmt, ...);
50
Linus Torvalds1da177e2005-04-16 15:20:36 -070051/* information message: e.g., configuration, major event */
Joe Perchesf96637b2013-05-04 22:12:25 -050052#define cifs_dbg(type, fmt, ...) \
Joe Perchesb6b38f72010-04-21 03:50:45 +000053do { \
Jamie Bainbridgeec7147a2015-11-07 22:13:49 +100054 if (type == FYI && cifsFYI & CIFS_INFO) { \
55 pr_debug_ratelimited("%s: " \
56 fmt, __FILE__, ##__VA_ARGS__); \
Joe Perchesf96637b2013-05-04 22:12:25 -050057 } else if (type == VFS) { \
58 cifs_vfs_err(fmt, ##__VA_ARGS__); \
59 } else if (type == NOISY && type != 0) { \
Jamie Bainbridgeec7147a2015-11-07 22:13:49 +100060 pr_debug_ratelimited(fmt, ##__VA_ARGS__); \
Joe Perchesf96637b2013-05-04 22:12:25 -050061 } \
Joe Perchesb6b38f72010-04-21 03:50:45 +000062} while (0)
Linus Torvalds1da177e2005-04-16 15:20:36 -070063
64/*
65 * debug OFF
66 * ---------
67 */
68#else /* _CIFS_DEBUG */
Joe Perchesf96637b2013-05-04 22:12:25 -050069#define cifs_dbg(type, fmt, ...) \
Joe Perchesbde98192012-12-05 12:42:47 -080070do { \
71 if (0) \
Andy Shevchenko0b456f02014-08-27 16:49:44 +030072 pr_debug(fmt, ##__VA_ARGS__); \
Joe Perchesbde98192012-12-05 12:42:47 -080073} while (0)
Joe Perchesf96637b2013-05-04 22:12:25 -050074#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -070075
76#endif /* _H_CIFS_DEBUG */