X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=kerncompat.h;h=fa96715fb70cef75e8c95603f5034a39d57a268e;hb=652544f4c01b8b1a2ab1705cec33af337ffae2ff;hp=9bd25bde2f572b16538d6d1a1f4c21bebe183fe9;hpb=dd2c2a4c67d509d90142b9443aa7449ef4257b2b;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/kerncompat.h b/kerncompat.h index 9bd25bd..fa96715 100644 --- a/kerncompat.h +++ b/kerncompat.h @@ -86,46 +86,36 @@ static inline void print_trace(void) size = backtrace(array, MAX_BACKTRACE); backtrace_symbols_fd(array, size, 2); } +#endif -static inline void assert_trace(const char *assertion, const char *filename, +static inline void warning_trace(const char *assertion, const char *filename, const char *func, unsigned line, long val) { if (!val) return; - if (assertion) - fprintf(stderr, "%s:%d: %s: Assertion `%s` failed, value %ld\n", - filename, line, func, assertion, val); - else - fprintf(stderr, "%s:%d: %s: Assertion failed, value %ld.\n", - filename, line, func, val); + fprintf(stderr, + "%s:%d: %s: Warning: assertion `%s` failed, value %ld\n", + filename, line, func, assertion, val); +#ifndef BTRFS_DISABLE_BACKTRACE print_trace(); - abort(); - exit(1); -} - #endif +} -static inline void warning_trace(const char *assertion, const char *filename, - const char *func, unsigned line, long val, - int trace) +static inline void bugon_trace(const char *assertion, const char *filename, + const char *func, unsigned line, long val) { if (!val) return; - if (assertion) - fprintf(stderr, - "%s:%d: %s: Warning: assertion `%s` failed, value %ld\n", - filename, line, func, assertion, val); - else - fprintf(stderr, - "%s:%d: %s: Warning: assertion failed, value %ld.\n", - filename, line, func, val); + fprintf(stderr, + "%s:%d: %s: BUG_ON `%s` triggered, value %ld\n", + filename, line, func, assertion, val); #ifndef BTRFS_DISABLE_BACKTRACE - if (trace) - print_trace(); + print_trace(); #endif + abort(); + exit(1); } - #ifdef __CHECKER__ #define __force __attribute__((force)) #define __bitwise__ __attribute__((bitwise)) @@ -263,11 +253,16 @@ static inline long PTR_ERR(const void *ptr) return (long) ptr; } -static inline long IS_ERR(const void *ptr) +static inline int IS_ERR(const void *ptr) { return IS_ERR_VALUE((unsigned long)ptr); } +static inline int IS_ERR_OR_NULL(const void *ptr) +{ + return !ptr || IS_ERR(ptr); +} + /* * This looks more complex than it should be. But we need to * get the type for the ~ right in round_down (it needs to be @@ -296,25 +291,39 @@ static inline long IS_ERR(const void *ptr) #define vfree(x) free(x) #ifndef BTRFS_DISABLE_BACKTRACE -#define BUG_ON(c) assert_trace(#c, __FILE__, __func__, __LINE__, (long)(c)) -#define WARN_ON(c) warning_trace(#c, __FILE__, __func__, __LINE__, (long)(c), 1) -#define ASSERT(c) assert_trace(#c, __FILE__, __func__, __LINE__, (long)!(c)) -#define BUG() assert_trace(NULL, __FILE__, __func__, __LINE__, 1) +static inline void assert_trace(const char *assertion, const char *filename, + const char *func, unsigned line, long val) +{ + if (val) + return; + fprintf(stderr, + "%s:%d: %s: Assertion `%s` failed, value %ld\n", + filename, line, func, assertion, val); +#ifndef BTRFS_DISABLE_BACKTRACE + print_trace(); +#endif + abort(); + exit(1); +} +#define ASSERT(c) assert_trace(#c, __FILE__, __func__, __LINE__, (long)(c)) #else -#define BUG_ON(c) assert(!(c)) -#define WARN_ON(c) warning_trace(#c, __FILE__, __func__, __LINE__, (long)(c), 0) -#define ASSERT(c) assert(!(c)) -#define BUG() assert(0) +#define ASSERT(c) assert(c) #endif +#define BUG_ON(c) bugon_trace(#c, __FILE__, __func__, __LINE__, (long)(c)) +#define BUG() BUG_ON(1) +#define WARN_ON(c) warning_trace(#c, __FILE__, __func__, __LINE__, (long)(c)) + #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) +#ifndef __bitwise #ifdef __CHECKER__ #define __bitwise __bitwise__ #else #define __bitwise -#endif +#endif /* __CHECKER__ */ +#endif /* __bitwise */ /* Alignment check */ #define IS_ALIGNED(x, a) (((x) & ((typeof(x))(a) - 1)) == 0)