xref: /linux/fs/ntfs/debug.h (revision 1e9ea7e04472d4e5e12e58c881eaacfb3e49b669)
1*1e9ea7e0SNamjae Jeon /* SPDX-License-Identifier: GPL-2.0-or-later */
2*1e9ea7e0SNamjae Jeon /*
3*1e9ea7e0SNamjae Jeon  * debug.h - NTFS kernel debug support. Part of the Linux-NTFS project.
4*1e9ea7e0SNamjae Jeon  *
5*1e9ea7e0SNamjae Jeon  * Copyright (c) 2001-2004 Anton Altaparmakov
6*1e9ea7e0SNamjae Jeon  */
7*1e9ea7e0SNamjae Jeon 
8*1e9ea7e0SNamjae Jeon #ifndef _LINUX_NTFS_DEBUG_H
9*1e9ea7e0SNamjae Jeon #define _LINUX_NTFS_DEBUG_H
10*1e9ea7e0SNamjae Jeon 
11*1e9ea7e0SNamjae Jeon #include <linux/fs.h>
12*1e9ea7e0SNamjae Jeon 
13*1e9ea7e0SNamjae Jeon #include "runlist.h"
14*1e9ea7e0SNamjae Jeon 
15*1e9ea7e0SNamjae Jeon #ifdef DEBUG
16*1e9ea7e0SNamjae Jeon 
17*1e9ea7e0SNamjae Jeon extern int debug_msgs;
18*1e9ea7e0SNamjae Jeon 
19*1e9ea7e0SNamjae Jeon extern __printf(4, 5)
20*1e9ea7e0SNamjae Jeon void __ntfs_debug(const char *file, int line, const char *function,
21*1e9ea7e0SNamjae Jeon 		  const char *format, ...);
22*1e9ea7e0SNamjae Jeon /**
23*1e9ea7e0SNamjae Jeon  * ntfs_debug - write a debug level message to syslog
24*1e9ea7e0SNamjae Jeon  * @f:		a printf format string containing the message
25*1e9ea7e0SNamjae Jeon  * @...:	the variables to substitute into @f
26*1e9ea7e0SNamjae Jeon  *
27*1e9ea7e0SNamjae Jeon  * ntfs_debug() writes a DEBUG level message to the syslog but only if the
28*1e9ea7e0SNamjae Jeon  * driver was compiled with -DDEBUG. Otherwise, the call turns into a NOP.
29*1e9ea7e0SNamjae Jeon  */
30*1e9ea7e0SNamjae Jeon #define ntfs_debug(f, a...)						\
31*1e9ea7e0SNamjae Jeon 	__ntfs_debug(__FILE__, __LINE__, __func__, f, ##a)
32*1e9ea7e0SNamjae Jeon 
33*1e9ea7e0SNamjae Jeon extern void ntfs_debug_dump_runlist(const runlist_element *rl);
34*1e9ea7e0SNamjae Jeon 
35*1e9ea7e0SNamjae Jeon #else	/* !DEBUG */
36*1e9ea7e0SNamjae Jeon 
37*1e9ea7e0SNamjae Jeon #define ntfs_debug(fmt, ...)						\
38*1e9ea7e0SNamjae Jeon do {									\
39*1e9ea7e0SNamjae Jeon 	if (0)								\
40*1e9ea7e0SNamjae Jeon 		no_printk(fmt, ##__VA_ARGS__);				\
41*1e9ea7e0SNamjae Jeon } while (0)
42*1e9ea7e0SNamjae Jeon 
43*1e9ea7e0SNamjae Jeon #define ntfs_debug_dump_runlist(rl)	do {} while (0)
44*1e9ea7e0SNamjae Jeon 
45*1e9ea7e0SNamjae Jeon #endif	/* !DEBUG */
46*1e9ea7e0SNamjae Jeon 
47*1e9ea7e0SNamjae Jeon extern  __printf(3, 4)
48*1e9ea7e0SNamjae Jeon void __ntfs_warning(const char *function, const struct super_block *sb,
49*1e9ea7e0SNamjae Jeon 		    const char *fmt, ...);
50*1e9ea7e0SNamjae Jeon #define ntfs_warning(sb, f, a...)	__ntfs_warning(__func__, sb, f, ##a)
51*1e9ea7e0SNamjae Jeon 
52*1e9ea7e0SNamjae Jeon extern  __printf(3, 4)
53*1e9ea7e0SNamjae Jeon void __ntfs_error(const char *function, const struct super_block *sb,
54*1e9ea7e0SNamjae Jeon 		  const char *fmt, ...);
55*1e9ea7e0SNamjae Jeon #define ntfs_error(sb, f, a...)		__ntfs_error(__func__, sb, f, ##a)
56*1e9ea7e0SNamjae Jeon 
57*1e9ea7e0SNamjae Jeon #endif /* _LINUX_NTFS_DEBUG_H */
58