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