Print this page
3006 VERIFY[S,U,P] and ASSERT[S,U,P] frequently check if first argument is zero

*** 34,44 **** #define _SYS_MUTEX_H #define _SYS_RWLOCK_H #define _SYS_CONDVAR_H #define _SYS_SYSTM_H - #define _SYS_DEBUG_H #define _SYS_T_LOCK_H #define _SYS_VNODE_H #define _SYS_VFS_H #define _SYS_SUNDDI_H #define _SYS_CALLB_H --- 34,43 ----
*** 76,85 **** --- 75,85 ---- #include <sys/kstat.h> #include <sys/u8_textprep.h> #include <sys/sysevent/eventdefs.h> #include <sys/sysevent/dev.h> #include <sys/sunddi.h> + #include <sys/debug.h> /* * Debugging */
*** 108,171 **** #define fm_panic panic extern int aok; - /* This definition is copied from assert.h. */ - #if defined(__STDC__) - #if __STDC_VERSION__ - 0 >= 199901L - #define zverify(EX) (void)((EX) || (aok) || \ - (__assert_c99(#EX, __FILE__, __LINE__, __func__), 0)) - #else - #define zverify(EX) (void)((EX) || (aok) || \ - (__assert(#EX, __FILE__, __LINE__), 0)) - #endif /* __STDC_VERSION__ - 0 >= 199901L */ - #else - #define zverify(EX) (void)((EX) || (aok) || \ - (_assert("EX", __FILE__, __LINE__), 0)) - #endif /* __STDC__ */ - - - #define VERIFY zverify - #define ASSERT zverify - #undef assert - #define assert zverify - - extern void __assert(const char *, const char *, int); - - #ifdef lint - #define VERIFY3_IMPL(x, y, z, t) if (x == z) ((void)0) - #else - /* BEGIN CSTYLED */ - #define VERIFY3_IMPL(LEFT, OP, RIGHT, TYPE) do { \ - const TYPE __left = (TYPE)(LEFT); \ - const TYPE __right = (TYPE)(RIGHT); \ - if (!(__left OP __right) && (!aok)) { \ - char *__buf = alloca(256); \ - (void) snprintf(__buf, 256, "%s %s %s (0x%llx %s 0x%llx)", \ - #LEFT, #OP, #RIGHT, \ - (u_longlong_t)__left, #OP, (u_longlong_t)__right); \ - __assert(__buf, __FILE__, __LINE__); \ - } \ - _NOTE(CONSTCOND) } while (0) - /* END CSTYLED */ - #endif /* lint */ - - #define VERIFY3S(x, y, z) VERIFY3_IMPL(x, y, z, int64_t) - #define VERIFY3U(x, y, z) VERIFY3_IMPL(x, y, z, uint64_t) - #define VERIFY3P(x, y, z) VERIFY3_IMPL(x, y, z, uintptr_t) - - #ifdef NDEBUG - #define ASSERT3S(x, y, z) ((void)0) - #define ASSERT3U(x, y, z) ((void)0) - #define ASSERT3P(x, y, z) ((void)0) - #else - #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) - #endif - /* * DTrace SDT probes have different signatures in userland than they do in * kernel. If they're being used in kernel code, re-define them out of * existence for their counterparts in libzpool. */ --- 108,117 ----