]> git.proxmox.com Git - mirror_spl.git/blobdiff - include/sys/debug.h
Retire legacy debugging infrastructure
[mirror_spl.git] / include / sys / debug.h
index 3a4b1352fbfd915521d87268fa2bf323893b10fa..cae2d49e44c41b52a007b410cb1494e50c7809f3 100644 (file)
@@ -30,7 +30,6 @@
  *
  * PANIC()     - Panic the node and print message.
  * ASSERT()    - Assert X is true, if not panic.
- * ASSERTF()   - Assert X is true, if not panic and print message.
  * ASSERTV()   - Wraps a variable declaration which is only used by ASSERT().
  * ASSERT3S()  - Assert signed X OP Y is true, if not panic.
  * ASSERT3U()  - Assert unsigned X OP Y is true, if not panic.
  */
 
 #ifndef _SPL_DEBUG_H
-#define _SPL_DEBUG_H
+#define        _SPL_DEBUG_H
 
-#include <spl-debug.h>
-
-#ifdef NDEBUG /* Debugging Disabled */
-
-/* Define SPL_DEBUG_STR to make clear which ASSERT definitions are used */
-#define SPL_DEBUG_STR  ""
-
-#define PANIC(fmt, a...)                                               \
-       spl_PANIC(__FILE__, __FUNCTION__, __LINE__, fmt, ## a)
-
-#define __ASSERT(x)                    ((void)0)
-#define ASSERT(x)                      ((void)0)
-#define ASSERTF(x, y, z...)            ((void)0)
-#define ASSERTV(x)
-#define VERIFY(cond)                                                   \
-       (void)(unlikely(!(cond)) &&                                     \
-               spl_PANIC(__FILE__, __FUNCTION__, __LINE__,             \
-               "%s", "VERIFY(" #cond ") failed\n"))
-
-#define VERIFY3_IMPL(LEFT, OP, RIGHT, TYPE, FMT, CAST)                 \
-       (void)((!((TYPE)(LEFT) OP (TYPE)(RIGHT))) &&                    \
-               spl_PANIC(__FILE__, __FUNCTION__, __LINE__,             \
-               "VERIFY3(" #LEFT " " #OP " " #RIGHT ") "                \
-                   "failed (" FMT " " #OP " " FMT ")\n",               \
-                   CAST (LEFT), CAST (RIGHT)))
-
-#define VERIFY3S(x,y,z)        VERIFY3_IMPL(x, y, z, int64_t, "%lld", (long long))
-#define VERIFY3U(x,y,z)        VERIFY3_IMPL(x, y, z, uint64_t, "%llu",         \
-                                   (unsigned long long))
-#define VERIFY3P(x,y,z)        VERIFY3_IMPL(x, y, z, uintptr_t, "%p", (void *))
-#define VERIFY0(x)     VERIFY3_IMPL(0, ==, x, int64_t, "%lld", (long long))
-
-#define ASSERT3S(x,y,z)        ((void)0)
-#define ASSERT3U(x,y,z)        ((void)0)
-#define ASSERT3P(x,y,z)        ((void)0)
-#define ASSERT0(x)     ((void)0)
-
-#else /* Debugging Enabled */
-
-/* Define SPL_DEBUG_STR to make clear which ASSERT definitions are used */
-#define SPL_DEBUG_STR  " (DEBUG mode)"
-
-#define PANIC(fmt, a...)                                               \
-       spl_PANIC(__FILE__, __FUNCTION__, __LINE__, fmt, ## a)
-
-/* ASSERTION that is safe to use within the debug system */
-#define __ASSERT(cond)                                                 \
-do {                                                                   \
-       if (unlikely(!(cond))) {                                        \
-           printk(KERN_EMERG "ASSERTION(" #cond ") failed\n");         \
-           BUG();                                                      \
-       }                                                               \
-} while (0)
+/*
+ * Common DEBUG functionality.
+ */
+int spl_panic(const char *file, const char *func, int line,
+    const char *fmt, ...);
+void spl_dumpstack(void);
 
-/* ASSERTION that will debug log used outside the debug sysytem */
-#define ASSERT(cond)                                                   \
-       (void)(unlikely(!(cond)) &&                                     \
-               spl_PANIC(__FILE__, __FUNCTION__, __LINE__,             \
-               "%s", "ASSERTION(" #cond ") failed\n"))
+#define        PANIC(fmt, a...)                                                \
+       spl_panic(__FILE__, __FUNCTION__, __LINE__, fmt, ## a)
 
-#define ASSERTF(cond, fmt, a...)                                       \
+#define        VERIFY(cond)                                                    \
        (void)(unlikely(!(cond)) &&                                     \
-               spl_PANIC(__FILE__, __FUNCTION__, __LINE__,             \
-               "ASSERTION(" #cond ") failed: " fmt, ## a))
+           spl_panic(__FILE__, __FUNCTION__, __LINE__,                 \
+           "%s", "VERIFY(" #cond ") failed\n"))
 
-#define VERIFY3_IMPL(LEFT, OP, RIGHT, TYPE, FMT, CAST)                 \
+#define        VERIFY3_IMPL(LEFT, OP, RIGHT, TYPE, FMT, CAST)                  \
        (void)((!((TYPE)(LEFT) OP (TYPE)(RIGHT))) &&                    \
-               spl_PANIC(__FILE__, __FUNCTION__, __LINE__,             \
-               "VERIFY3(" #LEFT " " #OP " " #RIGHT ") "                \
-                   "failed (" FMT " " #OP " " FMT ")\n",               \
-                   CAST (LEFT), CAST (RIGHT)))
+           spl_panic(__FILE__, __FUNCTION__, __LINE__,                 \
+           "VERIFY3(" #LEFT " " #OP " " #RIGHT ") "                    \
+           "failed (" FMT " " #OP " " FMT ")\n",                       \
+           CAST (LEFT), CAST (RIGHT)))
 
-#define VERIFY3S(x,y,z)        VERIFY3_IMPL(x, y, z, int64_t, "%lld", (long long))
-#define VERIFY3U(x,y,z)        VERIFY3_IMPL(x, y, z, uint64_t, "%llu",         \
+#define        VERIFY3S(x,y,z) VERIFY3_IMPL(x, y, z, int64_t, "%lld", (long long))
+#define        VERIFY3U(x,y,z) VERIFY3_IMPL(x, y, z, uint64_t, "%llu",         \
                                    (unsigned long long))
-#define VERIFY3P(x,y,z)        VERIFY3_IMPL(x, y, z, uintptr_t, "%p", (void *))
-#define VERIFY0(x)     VERIFY3_IMPL(0, ==, x, int64_t, "%lld", (long long))
-
-#define ASSERT3S(x,y,z)        VERIFY3S(x, y, z)
-#define ASSERT3U(x,y,z)        VERIFY3U(x, y, z)
-#define ASSERT3P(x,y,z)        VERIFY3P(x, y, z)
-#define ASSERT0(x)     VERIFY0(x)
+#define        VERIFY3P(x,y,z) VERIFY3_IMPL(x, y, z, uintptr_t, "%p", (void *))
+#define        VERIFY0(x)      VERIFY3_IMPL(0, ==, x, int64_t, "%lld", (long long))
 
-#define ASSERTV(x)     x
-#define VERIFY(x)      ASSERT(x)
-
-#endif /* NDEBUG */
+#define        CTASSERT_GLOBAL(x)              _CTASSERT(x, __LINE__)
+#define        CTASSERT(x)                     { _CTASSERT(x, __LINE__); }
+#define        _CTASSERT(x, y)                 __CTASSERT(x, y)
+#define        __CTASSERT(x, y)                                                \
+       typedef char __attribute__ ((unused))                           \
+       __compile_time_assertion__ ## y[(x) ? 1 : -1]
 
 /*
- * Helpers for the Solaris debug macros above
+ * Debugging disabled (--disable-debug)
  */
-extern int spl_PANIC(char *filename, const char *functionname,
-       int lineno, const char *fmt, ...);
+#ifdef NDEBUG
+
+#define        SPL_DEBUG_STR           ""
+#define        ASSERT(x)               ((void)0)
+#define        ASSERTV(x)
+#define        ASSERT3S(x,y,z)         ((void)0)
+#define        ASSERT3U(x,y,z)         ((void)0)
+#define        ASSERT3P(x,y,z)         ((void)0)
+#define        ASSERT0(x)              ((void)0)
 
 /*
- * Compile-time assertion. The condition 'x' must be constant.
+ * Debugging enabled (--enable-debug)
  */
-#define        CTASSERT_GLOBAL(x)              _CTASSERT(x, __LINE__)
-#define        CTASSERT(x)                     { _CTASSERT(x, __LINE__); }
-#define        _CTASSERT(x, y)                 __CTASSERT(x, y)
-#define        __CTASSERT(x, y)                        \
-       typedef char __attribute__ ((unused))   \
-       __compile_time_assertion__ ## y[(x) ? 1 : -1]
+#else
+
+#define        SPL_DEBUG_STR           " (DEBUG mode)"
+#define        ASSERT(cond)            VERIFY(cond)
+#define        ASSERTV(x)              x
+#define        ASSERT3S(x,y,z)         VERIFY3S(x, y, z)
+#define        ASSERT3U(x,y,z)         VERIFY3U(x, y, z)
+#define        ASSERT3P(x,y,z)         VERIFY3P(x, y, z)
+#define        ASSERT0(x)              VERIFY0(x)
+
+#endif /* NDEBUG */
 
 #endif /* SPL_DEBUG_H */