.. | .. |
---|
183 | 183 | } |
---|
184 | 184 | EXPORT_SYMBOL(bt_err); |
---|
185 | 185 | |
---|
| 186 | +#ifdef CONFIG_BT_FEATURE_DEBUG |
---|
| 187 | +static bool debug_enable; |
---|
| 188 | + |
---|
| 189 | +void bt_dbg_set(bool enable) |
---|
| 190 | +{ |
---|
| 191 | + debug_enable = enable; |
---|
| 192 | +} |
---|
| 193 | + |
---|
| 194 | +bool bt_dbg_get(void) |
---|
| 195 | +{ |
---|
| 196 | + return debug_enable; |
---|
| 197 | +} |
---|
| 198 | + |
---|
| 199 | +void bt_dbg(const char *format, ...) |
---|
| 200 | +{ |
---|
| 201 | + struct va_format vaf; |
---|
| 202 | + va_list args; |
---|
| 203 | + |
---|
| 204 | + if (likely(!debug_enable)) |
---|
| 205 | + return; |
---|
| 206 | + |
---|
| 207 | + va_start(args, format); |
---|
| 208 | + |
---|
| 209 | + vaf.fmt = format; |
---|
| 210 | + vaf.va = &args; |
---|
| 211 | + |
---|
| 212 | + printk(KERN_DEBUG pr_fmt("%pV"), &vaf); |
---|
| 213 | + |
---|
| 214 | + va_end(args); |
---|
| 215 | +} |
---|
| 216 | +EXPORT_SYMBOL(bt_dbg); |
---|
| 217 | +#endif |
---|
| 218 | + |
---|
| 219 | +void bt_warn_ratelimited(const char *format, ...) |
---|
| 220 | +{ |
---|
| 221 | + struct va_format vaf; |
---|
| 222 | + va_list args; |
---|
| 223 | + |
---|
| 224 | + va_start(args, format); |
---|
| 225 | + |
---|
| 226 | + vaf.fmt = format; |
---|
| 227 | + vaf.va = &args; |
---|
| 228 | + |
---|
| 229 | + pr_warn_ratelimited("%pV", &vaf); |
---|
| 230 | + |
---|
| 231 | + va_end(args); |
---|
| 232 | +} |
---|
| 233 | +EXPORT_SYMBOL(bt_warn_ratelimited); |
---|
| 234 | + |
---|
186 | 235 | void bt_err_ratelimited(const char *format, ...) |
---|
187 | 236 | { |
---|
188 | 237 | struct va_format vaf; |
---|