btrfs-progs: kerncompat: make WARN_ON more verbose
Curretnly WARN_ON would crash but that's not it's purpose. Add helper that prints the warning, optionally with trace. Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
a08ca376f7
commit
26619538da
22
kerncompat.h
22
kerncompat.h
|
@ -94,6 +94,24 @@ static inline void assert_trace(const char *assertion, const char *filename,
|
|||
exit(1);
|
||||
}
|
||||
|
||||
static inline void warning_trace(const char *assertion, const char *filename,
|
||||
const char *func, unsigned line, int val,
|
||||
int trace)
|
||||
{
|
||||
if (val)
|
||||
return;
|
||||
if (assertion)
|
||||
fprintf(stderr,
|
||||
"%s:%d: %s: Warning: assertion `%s` failed, value %d\n",
|
||||
filename, line, func, assertion, val);
|
||||
else
|
||||
fprintf(stderr,
|
||||
"%s:%d: %s: Warning: assertion failed, value %d.\n",
|
||||
filename, line, func, val);
|
||||
if (trace)
|
||||
print_trace();
|
||||
}
|
||||
|
||||
#define BUG() assert_trace(NULL, __FILE__, __func__, __LINE__, 0)
|
||||
#else
|
||||
#define BUG() assert(0)
|
||||
|
@ -270,12 +288,12 @@ static inline long IS_ERR(const void *ptr)
|
|||
|
||||
#ifndef BTRFS_DISABLE_BACKTRACE
|
||||
#define BUG_ON(c) assert_trace(#c, __FILE__, __func__, __LINE__, !(c))
|
||||
#define WARN_ON(c) warning_trace(#c, __FILE__, __func__, __LINE__, !(c), 1)
|
||||
#else
|
||||
#define BUG_ON(c) assert(!(c))
|
||||
#define WARN_ON(c) warning_trace(#c, __FILE__, __func__, __LINE__, !(c), 0)
|
||||
#endif
|
||||
|
||||
#define WARN_ON(c) BUG_ON(c)
|
||||
|
||||
#ifndef BTRFS_DISABLE_BACKTRACE
|
||||
#define ASSERT(c) assert_trace(#c, __FILE__, __func__, __LINE__, (c))
|
||||
#else
|
||||
|
|
Loading…
Reference in New Issue