1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | /* |
3 | * Copyright (C) International Business Machines Corp., 2000-2002 |
4 | * Portions Copyright (C) Christoph Hellwig, 2001-2002 |
5 | */ |
6 | #ifndef _H_JFS_DEBUG |
7 | #define _H_JFS_DEBUG |
8 | |
9 | /* |
10 | * jfs_debug.h |
11 | * |
12 | * global debug message, data structure/macro definitions |
13 | * under control of CONFIG_JFS_DEBUG, CONFIG_JFS_STATISTICS; |
14 | */ |
15 | |
16 | /* |
17 | * Create /proc/fs/jfs if procfs is enabled andeither |
18 | * CONFIG_JFS_DEBUG or CONFIG_JFS_STATISTICS is defined |
19 | */ |
20 | #if defined(CONFIG_PROC_FS) && (defined(CONFIG_JFS_DEBUG) || defined(CONFIG_JFS_STATISTICS)) |
21 | #define PROC_FS_JFS |
22 | extern void jfs_proc_init(void); |
23 | extern void jfs_proc_clean(void); |
24 | #endif |
25 | |
26 | /* |
27 | * assert with traditional printf/panic |
28 | */ |
29 | #define assert(p) do { \ |
30 | if (!(p)) { \ |
31 | printk(KERN_CRIT "BUG at %s:%d assert(%s)\n", \ |
32 | __FILE__, __LINE__, #p); \ |
33 | BUG(); \ |
34 | } \ |
35 | } while (0) |
36 | |
37 | /* |
38 | * debug ON |
39 | * -------- |
40 | */ |
41 | #ifdef CONFIG_JFS_DEBUG |
42 | #define ASSERT(p) assert(p) |
43 | |
44 | /* printk verbosity */ |
45 | #define JFS_LOGLEVEL_ERR 1 |
46 | #define JFS_LOGLEVEL_WARN 2 |
47 | #define JFS_LOGLEVEL_DEBUG 3 |
48 | #define JFS_LOGLEVEL_INFO 4 |
49 | |
50 | extern int jfsloglevel; |
51 | |
52 | int jfs_txanchor_proc_show(struct seq_file *m, void *v); |
53 | |
54 | /* information message: e.g., configuration, major event */ |
55 | #define jfs_info(fmt, arg...) do { \ |
56 | if (jfsloglevel >= JFS_LOGLEVEL_INFO) \ |
57 | printk(KERN_INFO fmt "\n", ## arg); \ |
58 | } while (0) |
59 | |
60 | /* debug message: ad hoc */ |
61 | #define jfs_debug(fmt, arg...) do { \ |
62 | if (jfsloglevel >= JFS_LOGLEVEL_DEBUG) \ |
63 | printk(KERN_DEBUG fmt "\n", ## arg); \ |
64 | } while (0) |
65 | |
66 | /* warn message: */ |
67 | #define jfs_warn(fmt, arg...) do { \ |
68 | if (jfsloglevel >= JFS_LOGLEVEL_WARN) \ |
69 | printk(KERN_WARNING fmt "\n", ## arg); \ |
70 | } while (0) |
71 | |
72 | /* error event message: e.g., i/o error */ |
73 | #define jfs_err(fmt, arg...) do { \ |
74 | if (jfsloglevel >= JFS_LOGLEVEL_ERR) \ |
75 | printk(KERN_ERR fmt "\n", ## arg); \ |
76 | } while (0) |
77 | |
78 | /* |
79 | * debug OFF |
80 | * --------- |
81 | */ |
82 | #else /* CONFIG_JFS_DEBUG */ |
83 | #define ASSERT(p) do {} while (0) |
84 | #define jfs_info(fmt, arg...) do {} while (0) |
85 | #define jfs_debug(fmt, arg...) do {} while (0) |
86 | #define jfs_warn(fmt, arg...) do {} while (0) |
87 | #define jfs_err(fmt, arg...) do {} while (0) |
88 | #endif /* CONFIG_JFS_DEBUG */ |
89 | |
90 | /* |
91 | * statistics |
92 | * ---------- |
93 | */ |
94 | #ifdef CONFIG_JFS_STATISTICS |
95 | int jfs_lmstats_proc_show(struct seq_file *m, void *v); |
96 | int jfs_txstats_proc_show(struct seq_file *m, void *v); |
97 | int jfs_mpstat_proc_show(struct seq_file *m, void *v); |
98 | int jfs_xtstat_proc_show(struct seq_file *m, void *v); |
99 | |
100 | #define INCREMENT(x) ((x)++) |
101 | #define DECREMENT(x) ((x)--) |
102 | #define HIGHWATERMARK(x,y) ((x) = max((x), (y))) |
103 | #else |
104 | #define INCREMENT(x) |
105 | #define DECREMENT(x) |
106 | #define HIGHWATERMARK(x,y) |
107 | #endif /* CONFIG_JFS_STATISTICS */ |
108 | |
109 | #endif /* _H_JFS_DEBUG */ |
110 | |