Rev 3391 | Rev 3482 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
3031 | serge | 1 | #ifndef _ASM_GENERIC_BUG_H |
2 | #define _ASM_GENERIC_BUG_H |
||
3 | |||
3391 | Serge | 4 | //extern __printf(3, 4) |
5 | //void warn_slowpath_fmt(const char *file, const int line, |
||
6 | // const char *fmt, ...); |
||
7 | //extern __printf(4, 5) |
||
8 | //void warn_slowpath_fmt_taint(const char *file, const int line, unsigned taint, |
||
9 | // const char *fmt, ...); |
||
3031 | serge | 10 | |
3391 | Serge | 11 | //extern void warn_slowpath_null(const char *file, const int line); |
3031 | serge | 12 | |
3391 | Serge | 13 | #define __WARN() printf("\nWARNING: at %s:%d\n", __FILE__, __LINE__) |
14 | #define __WARN_printf(arg...) printf("\nWARNING: at %s:%d\n", __FILE__, __LINE__) |
||
15 | |||
16 | |||
17 | #define WARN(condition, format...) ({ \ |
||
18 | int __ret_warn_on = !!(condition); \ |
||
19 | if (unlikely(__ret_warn_on)) \ |
||
20 | __WARN_printf(format); \ |
||
21 | unlikely(__ret_warn_on); \ |
||
3031 | serge | 22 | }) |
23 | |||
24 | |||
3391 | Serge | 25 | #define WARN_ON(condition) ({ \ |
26 | int __ret_warn_on = !!(condition); \ |
||
27 | if (unlikely(__ret_warn_on)) \ |
||
28 | __WARN(); \ |
||
29 | unlikely(__ret_warn_on); \ |
||
30 | }) |
||
31 | |||
32 | |||
33 | #define WARN_ONCE(condition, format...) ({ \ |
||
34 | static bool __warned; \ |
||
35 | int __ret_warn_once = !!(condition); \ |
||
36 | \ |
||
37 | if (unlikely(__ret_warn_once)) \ |
||
38 | if (WARN(!__warned, format)) \ |
||
39 | __warned = true; \ |
||
40 | unlikely(__ret_warn_once); \ |
||
41 | }) |
||
42 | |||
43 | |||
44 | #define WARN_ON_ONCE(condition) ({ \ |
||
45 | static bool __warned; \ |
||
46 | int __ret_warn_once = !!(condition); \ |
||
47 | \ |
||
48 | if (unlikely(__ret_warn_once)) \ |
||
49 | if (WARN_ON(!__warned)) \ |
||
50 | __warned = true; \ |
||
51 | unlikely(__ret_warn_once); \ |
||
52 | }) |
||
53 | |||
54 | #define BUG() do { \ |
||
55 | printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __FUNCTION__); \ |
||
56 | while(1){ delay(10); }; \ |
||
57 | } while (0) |
||
58 | |||
59 | #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while(0) |
||
60 | |||
3480 | Serge | 61 | #define BUILD_BUG_ON_NOT_POWER_OF_2(n) \ |
62 | BUILD_BUG_ON((n) == 0 || (((n) & ((n) - 1)) != 0)) |
||
3391 | Serge | 63 | |
64 | |||
3031 | serge | 65 | #endif |