+/*
+ * If @expr is true, an internal error occured.
+ * Return @expr != 0.
+ * Usage: if (CANT_HAPPEN(...)) <recovery code>;
+ */
+#define CANT_HAPPEN(expr) ((expr) ? oops(#expr, __FILE__, __LINE__), 1 : 0)
+
+/*
+ * Report internal error.
+ * Usage: CANT_REACH(); <recovery code>;
+ */
+#define CANT_REACH() oops(NULL, __FILE__, __LINE__)
+
+extern void oops(char *, char *, int);
+extern void (*oops_handler)(void);
+
+/*
+ * Assert constant expression @cond, return 1.
+ * If @cond is zero, force a compilation error.
+ */
+#define BUILD_ASSERT_ONE(cond) \
+ (sizeof(char[1 - 2 * !(cond)]))
+
+/*
+ * Assert constant expression @cond.
+ * If @cond is zero, force a compilation error.
+ */
+#define BUILD_ASSERT(cond) \
+ ((void)BUILD_ASSERT_ONE(cond))