aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/ubi/debug.h
diff options
context:
space:
mode:
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2011-03-15 04:30:40 -0400
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2011-03-16 07:50:17 -0400
commit28237e4583604818294dc1ce7881db5f53377b9c (patch)
tree84fc5d22a1f4213824445253cc9702be96069b47 /drivers/mtd/ubi/debug.h
parent92d124f5314913a21f7fa98b22ee457dab171edd (diff)
UBI: make tests modes dynamic
Similarly to the debugging checks and message, make the test modes be dynamically selected via the "debug_tsts" module parameter or via the "/sys/module/ubi/parameters/debug_tsts" sysfs file. This is consistent with UBIFS as well. And now, since all the Kconfig knobs became dynamic, we can remove the Kconfig.debug file completely. Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Diffstat (limited to 'drivers/mtd/ubi/debug.h')
-rw-r--r--drivers/mtd/ubi/debug.h56
1 files changed, 36 insertions, 20 deletions
diff --git a/drivers/mtd/ubi/debug.h b/drivers/mtd/ubi/debug.h
index 2511b586490a..0b0c2888c656 100644
--- a/drivers/mtd/ubi/debug.h
+++ b/drivers/mtd/ubi/debug.h
@@ -116,13 +116,34 @@ int ubi_dbg_check_all_ff(struct ubi_device *ubi, int pnum, int offset, int len);
116int ubi_dbg_check_write(struct ubi_device *ubi, const void *buf, int pnum, 116int ubi_dbg_check_write(struct ubi_device *ubi, const void *buf, int pnum,
117 int offset, int len); 117 int offset, int len);
118 118
119#ifdef CONFIG_MTD_UBI_DEBUG_DISABLE_BGT 119extern unsigned int ubi_tst_flags;
120#define DBG_DISABLE_BGT 1 120
121#else 121/*
122#define DBG_DISABLE_BGT 0 122 * Special testing flags.
123#endif 123 *
124 * UBIFS_TST_DISABLE_BGT: disable the background thread
125 * UBI_TST_EMULATE_BITFLIPS: emulate bit-flips
126 * UBI_TST_EMULATE_WRITE_FAILURES: emulate write failures
127 * UBI_TST_EMULATE_ERASE_FAILURES: emulate erase failures
128 */
129enum {
130 UBI_TST_DISABLE_BGT = 0x1,
131 UBI_TST_EMULATE_BITFLIPS = 0x2,
132 UBI_TST_EMULATE_WRITE_FAILURES = 0x4,
133 UBI_TST_EMULATE_ERASE_FAILURES = 0x8,
134};
135
136/**
137 * ubi_dbg_is_bgt_disabled - if the background thread is disabled.
138 *
139 * Returns non-zero if the UBI background thread is disabled for testing
140 * purposes.
141 */
142static inline int ubi_dbg_is_bgt_disabled(void)
143{
144 return ubi_tst_flags & UBI_TST_DISABLE_BGT;
145}
124 146
125#ifdef CONFIG_MTD_UBI_DEBUG_EMULATE_BITFLIPS
126/** 147/**
127 * ubi_dbg_is_bitflip - if it is time to emulate a bit-flip. 148 * ubi_dbg_is_bitflip - if it is time to emulate a bit-flip.
128 * 149 *
@@ -130,13 +151,11 @@ int ubi_dbg_check_write(struct ubi_device *ubi, const void *buf, int pnum,
130 */ 151 */
131static inline int ubi_dbg_is_bitflip(void) 152static inline int ubi_dbg_is_bitflip(void)
132{ 153{
133 return !(random32() % 200); 154 if (ubi_tst_flags & UBI_TST_EMULATE_BITFLIPS)
155 return !(random32() % 200);
156 return 0;
134} 157}
135#else
136#define ubi_dbg_is_bitflip() 0
137#endif
138 158
139#ifdef CONFIG_MTD_UBI_DEBUG_EMULATE_WRITE_FAILURES
140/** 159/**
141 * ubi_dbg_is_write_failure - if it is time to emulate a write failure. 160 * ubi_dbg_is_write_failure - if it is time to emulate a write failure.
142 * 161 *
@@ -145,13 +164,11 @@ static inline int ubi_dbg_is_bitflip(void)
145 */ 164 */
146static inline int ubi_dbg_is_write_failure(void) 165static inline int ubi_dbg_is_write_failure(void)
147{ 166{
148 return !(random32() % 500); 167 if (ubi_tst_flags & UBI_TST_EMULATE_WRITE_FAILURES)
168 return !(random32() % 500);
169 return 0;
149} 170}
150#else
151#define ubi_dbg_is_write_failure() 0
152#endif
153 171
154#ifdef CONFIG_MTD_UBI_DEBUG_EMULATE_ERASE_FAILURES
155/** 172/**
156 * ubi_dbg_is_erase_failure - if its time to emulate an erase failure. 173 * ubi_dbg_is_erase_failure - if its time to emulate an erase failure.
157 * 174 *
@@ -160,11 +177,10 @@ static inline int ubi_dbg_is_write_failure(void)
160 */ 177 */
161static inline int ubi_dbg_is_erase_failure(void) 178static inline int ubi_dbg_is_erase_failure(void)
162{ 179{
180 if (ubi_tst_flags & UBI_TST_EMULATE_ERASE_FAILURES)
163 return !(random32() % 400); 181 return !(random32() % 400);
182 return 0;
164} 183}
165#else
166#define ubi_dbg_is_erase_failure() 0
167#endif
168 184
169#else 185#else
170 186
@@ -187,7 +203,7 @@ static inline int ubi_dbg_is_erase_failure(void)
187#define ubi_dbg_dump_flash(ubi, pnum, offset, len) ({}) 203#define ubi_dbg_dump_flash(ubi, pnum, offset, len) ({})
188#define ubi_dbg_print_hex_dump(l, ps, pt, r, g, b, len, a) ({}) 204#define ubi_dbg_print_hex_dump(l, ps, pt, r, g, b, len, a) ({})
189 205
190#define DBG_DISABLE_BGT 0 206#define ubi_dbg_is_bgt_disabled() 0
191#define ubi_dbg_is_bitflip() 0 207#define ubi_dbg_is_bitflip() 0
192#define ubi_dbg_is_write_failure() 0 208#define ubi_dbg_is_write_failure() 0
193#define ubi_dbg_is_erase_failure() 0 209#define ubi_dbg_is_erase_failure() 0