]> err.no Git - linux-2.6/blobdiff - include/asm-generic/bug.h
[PATCH] make 1-bit bitfields unsigned
[linux-2.6] / include / asm-generic / bug.h
index a5250895155ef6e5affcae708a4a79f692f037e2..c92ae0f166ff44f1757f456a132202b22f0f5368 100644 (file)
 #endif
 
 #ifndef HAVE_ARCH_WARN_ON
-#define WARN_ON(condition) unlikely((condition))
+#define WARN_ON(condition) ({                                          \
+       typeof(condition) __ret_warn_on = (condition);                  \
+       unlikely(__ret_warn_on);                                        \
+})
 #endif
 #endif
 
-#define WARN_ON_ONCE(condition)        ({                      \
-       static int __warn_once = 1;                     \
-       typeof(condition) __ret_warn_once = (condition);\
-                                                       \
-       if (likely(__warn_once))                        \
-               if (WARN_ON(__ret_warn_once))           \
-                       __warn_once = 0;                \
-       unlikely(__ret_warn_once);                      \
+#define WARN_ON_ONCE(condition)        ({                              \
+       static int __warned;                                    \
+       typeof(condition) __ret_warn_once = (condition);        \
+                                                               \
+       if (unlikely(__ret_warn_once))                          \
+               if (WARN_ON(!__warned))                         \
+                       __warned = 1;                           \
+       unlikely(__ret_warn_once);                              \
 })
 
 #ifdef CONFIG_SMP