Update checkpatch
[akaros.git] / kern / include / assert.h
index de94831..a2d9994 100644 (file)
@@ -1,19 +1,33 @@
 /* See COPYRIGHT for copyright information. */
 
-#ifndef ROS_INC_ASSERT_H
-#define ROS_INC_ASSERT_H
+#pragma once
 
-void ( _warn)(const char* NTS, int, const char* NTS, ...);
-void ( _panic)(const char* NTS, int, const char* NTS, ...)
-    __attribute__((noreturn));
+#include <compiler.h>
+
+void _warn(const char *, int, const char *, ...);
+struct hw_trapframe;
+void _panic(struct hw_trapframe *, const char *, int, const char *, ...)
+       __attribute__((noreturn));
 
 #define warn(...) _warn(__FILE__, __LINE__, __VA_ARGS__)
-#define panic(...) _panic(__FILE__, __LINE__, __VA_ARGS__)
+#define warn_once(...) run_once_racy(warn(__VA_ARGS__))
+#define warn_on(x) do { if (x) warn(#x);} while (0)
+#define warn_on_once(x) do { if (x) warn_once(#x);} while (0)
+#define panic(...) _panic(NULL, __FILE__, __LINE__, __VA_ARGS__)
+#define panic_hwtf(x, ...) _panic(x, __FILE__, __LINE__, __VA_ARGS__)
+#define exhausted(...) _panic(NULL, __FILE__, __LINE__, __VA_ARGS__)
 
 #define assert(x)              \
-       do { if (!(x)) panic("assertion failed: %s", #x); } while (0)
+       do { if (unlikely(!(x))) panic("assertion failed: %s", #x); } while (0)
+
+#define error_assert(e, x) \
+       do { if (unlikely(!(x))) error(e, "Assertion failed: " #x); } while (0)
 
 // static_assert(x) will generate a compile-time error if 'x' is false.
 #define static_assert(x)       switch (x) case 0: case (x):
 
-#endif /* !ROS_INC_ASSERT_H */
+#ifdef CONFIG_DEVELOPMENT_ASSERTIONS
+#define dassert(x) assert(x)
+#else
+#define dassert(x) ((void) (x))  // 'Use' value, stop compile warnings
+#endif /* DEVELOPMENT_ASSERTIONS */