Subversion Repositories Kolibri OS

Rev

Rev 3763 | Rev 5270 | 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__)
3747 Serge 14
//#define __WARN_printf(arg...)   printf("\nWARNING: at %s:%d\n", __FILE__, __LINE__)
15
#define __WARN_printf(arg...)   do { printf(arg); __WARN(); } while (0)
3391 Serge 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 (0)
57
 
58
#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while(0)
59
 
5056 serge 60
/* Force a compilation error if a constant expression is not a power of 2 */
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
 
3482 Serge 65
#define printk_once(fmt, ...)                   \
66
({                                              \
67
        static bool __print_once;               \
68
                                                \
69
        if (!__print_once) {                    \
70
                __print_once = true;            \
71
                printk(fmt, ##__VA_ARGS__);     \
72
        }                                       \
73
})
74
 
75
 
76
#define pr_warn_once(fmt, ...)                                  \
77
        printk_once(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
78
 
3031 serge 79
#endif