diff options
Diffstat (limited to 'ANDROID_3.4.5/include/asm-generic/bug.h')
-rw-r--r-- | ANDROID_3.4.5/include/asm-generic/bug.h | 205 |
1 files changed, 0 insertions, 205 deletions
diff --git a/ANDROID_3.4.5/include/asm-generic/bug.h b/ANDROID_3.4.5/include/asm-generic/bug.h deleted file mode 100644 index 2520a6e2..00000000 --- a/ANDROID_3.4.5/include/asm-generic/bug.h +++ /dev/null @@ -1,205 +0,0 @@ -#ifndef _ASM_GENERIC_BUG_H -#define _ASM_GENERIC_BUG_H - -#include <linux/compiler.h> - -#ifdef CONFIG_BUG - -#ifdef CONFIG_GENERIC_BUG -#ifndef __ASSEMBLY__ -struct bug_entry { -#ifndef CONFIG_GENERIC_BUG_RELATIVE_POINTERS - unsigned long bug_addr; -#else - signed int bug_addr_disp; -#endif -#ifdef CONFIG_DEBUG_BUGVERBOSE -#ifndef CONFIG_GENERIC_BUG_RELATIVE_POINTERS - const char *file; -#else - signed int file_disp; -#endif - unsigned short line; -#endif - unsigned short flags; -}; -#endif /* __ASSEMBLY__ */ - -#define BUGFLAG_WARNING (1 << 0) -#define BUGFLAG_TAINT(taint) (BUGFLAG_WARNING | ((taint) << 8)) -#define BUG_GET_TAINT(bug) ((bug)->flags >> 8) - -#endif /* CONFIG_GENERIC_BUG */ - -/* - * Don't use BUG() or BUG_ON() unless there's really no way out; one - * example might be detecting data structure corruption in the middle - * of an operation that can't be backed out of. If the (sub)system - * can somehow continue operating, perhaps with reduced functionality, - * it's probably not BUG-worthy. - * - * If you're tempted to BUG(), think again: is completely giving up - * really the *only* solution? There are usually better options, where - * users don't need to reboot ASAP and can mostly shut down cleanly. - */ -#ifndef HAVE_ARCH_BUG -#define BUG() do { \ - printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \ - panic("BUG!"); \ -} while (0) -#endif - -#ifndef HAVE_ARCH_BUG_ON -#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while(0) -#endif - -/* - * WARN(), WARN_ON(), WARN_ON_ONCE, and so on can be used to report - * significant issues that need prompt attention if they should ever - * appear at runtime. Use the versions with printk format strings - * to provide better diagnostics. - */ -#ifndef __WARN_TAINT -#ifndef __ASSEMBLY__ -extern __printf(3, 4) -void warn_slowpath_fmt(const char *file, const int line, - const char *fmt, ...); -extern __printf(4, 5) -void warn_slowpath_fmt_taint(const char *file, const int line, unsigned taint, - const char *fmt, ...); -extern void warn_slowpath_null(const char *file, const int line); -#define WANT_WARN_ON_SLOWPATH -#endif -#define __WARN() warn_slowpath_null(__FILE__, __LINE__) -#define __WARN_printf(arg...) warn_slowpath_fmt(__FILE__, __LINE__, arg) -#define __WARN_printf_taint(taint, arg...) \ - warn_slowpath_fmt_taint(__FILE__, __LINE__, taint, arg) -#else -#define __WARN() __WARN_TAINT(TAINT_WARN) -#define __WARN_printf(arg...) do { printk(arg); __WARN(); } while (0) -#define __WARN_printf_taint(taint, arg...) \ - do { printk(arg); __WARN_TAINT(taint); } while (0) -#endif - -#ifndef WARN_ON -#define WARN_ON(condition) ({ \ - int __ret_warn_on = !!(condition); \ - if (unlikely(__ret_warn_on)) \ - __WARN(); \ - unlikely(__ret_warn_on); \ -}) -#endif - -#ifndef WARN -#define WARN(condition, format...) ({ \ - int __ret_warn_on = !!(condition); \ - if (unlikely(__ret_warn_on)) \ - __WARN_printf(format); \ - unlikely(__ret_warn_on); \ -}) -#endif - -#define WARN_TAINT(condition, taint, format...) ({ \ - int __ret_warn_on = !!(condition); \ - if (unlikely(__ret_warn_on)) \ - __WARN_printf_taint(taint, format); \ - unlikely(__ret_warn_on); \ -}) - -#else /* !CONFIG_BUG */ -#ifndef HAVE_ARCH_BUG -#define BUG() do {} while(0) -#endif - -#ifndef HAVE_ARCH_BUG_ON -#define BUG_ON(condition) do { if (condition) ; } while(0) -#endif - -#ifndef HAVE_ARCH_WARN_ON -#define WARN_ON(condition) ({ \ - int __ret_warn_on = !!(condition); \ - unlikely(__ret_warn_on); \ -}) -#endif - -#ifndef WARN -#define WARN(condition, format...) ({ \ - int __ret_warn_on = !!(condition); \ - unlikely(__ret_warn_on); \ -}) -#endif - -#define WARN_TAINT(condition, taint, format...) WARN_ON(condition) - -#endif - -#define WARN_ON_ONCE(condition) ({ \ - static bool __section(.data.unlikely) __warned; \ - int __ret_warn_once = !!(condition); \ - \ - if (unlikely(__ret_warn_once)) \ - if (WARN_ON(!__warned)) \ - __warned = true; \ - unlikely(__ret_warn_once); \ -}) - -#define WARN_ONCE(condition, format...) ({ \ - static bool __section(.data.unlikely) __warned; \ - int __ret_warn_once = !!(condition); \ - \ - if (unlikely(__ret_warn_once)) \ - if (WARN(!__warned, format)) \ - __warned = true; \ - unlikely(__ret_warn_once); \ -}) - -#define WARN_TAINT_ONCE(condition, taint, format...) ({ \ - static bool __section(.data.unlikely) __warned; \ - int __ret_warn_once = !!(condition); \ - \ - if (unlikely(__ret_warn_once)) \ - if (WARN_TAINT(!__warned, taint, format)) \ - __warned = true; \ - unlikely(__ret_warn_once); \ -}) - -/* - * WARN_ON_SMP() is for cases that the warning is either - * meaningless for !SMP or may even cause failures. - * This is usually used for cases that we have - * WARN_ON(!spin_is_locked(&lock)) checks, as spin_is_locked() - * returns 0 for uniprocessor settings. - * It can also be used with values that are only defined - * on SMP: - * - * struct foo { - * [...] - * #ifdef CONFIG_SMP - * int bar; - * #endif - * }; - * - * void func(struct foo *zoot) - * { - * WARN_ON_SMP(!zoot->bar); - * - * For CONFIG_SMP, WARN_ON_SMP() should act the same as WARN_ON(), - * and should be a nop and return false for uniprocessor. - * - * if (WARN_ON_SMP(x)) returns true only when CONFIG_SMP is set - * and x is true. - */ -#ifdef CONFIG_SMP -# define WARN_ON_SMP(x) WARN_ON(x) -#else -/* - * Use of ({0;}) because WARN_ON_SMP(x) may be used either as - * a stand alone line statement or as a condition in an if () - * statement. - * A simple "0" would cause gcc to give a "statement has no effect" - * warning. - */ -# define WARN_ON_SMP(x) ({0;}) -#endif - -#endif |