mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
Cleanup VERIFY() macros (#17163)
- Fix VERIFY3B() when given non-boolean values.
- Map EQUIV() into VERIFY3B(,==,) as equivalent.
- Tune messages for better readability and to closer match source
code for easier search. Unify user-space messages with kernel.
- Tune printed types and remove %px outside of Linux kernel.
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Sponsored by: iXsystems, Inc.
Reviewed-by: @ImAwsumm
Reviewed-by: Rob Norris <robn@despairlabs.com>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
(cherry picked from commit 4866c2fabf)
This commit is contained in:
committed by
Tony Hutter
parent
7fde3933fb
commit
243a46f28d
+33
-32
@@ -86,12 +86,13 @@ do { \
|
||||
|
||||
#define VERIFY3B(LEFT, OP, RIGHT) \
|
||||
do { \
|
||||
const boolean_t __left = (boolean_t)(LEFT); \
|
||||
const boolean_t __right = (boolean_t)(RIGHT); \
|
||||
const boolean_t __left = (boolean_t)!!(LEFT); \
|
||||
const boolean_t __right = (boolean_t)!!(RIGHT); \
|
||||
if (!(__left OP __right)) \
|
||||
libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
|
||||
"%s %s %s (0x%llx %s 0x%llx)", #LEFT, #OP, #RIGHT, \
|
||||
(u_longlong_t)__left, #OP, (u_longlong_t)__right); \
|
||||
"VERIFY3B(%s, %s, %s) failed " \
|
||||
"(%d %s %d)", #LEFT, #OP, #RIGHT, \
|
||||
__left, #OP, __right); \
|
||||
} while (0)
|
||||
|
||||
#define VERIFY3S(LEFT, OP, RIGHT) \
|
||||
@@ -100,8 +101,9 @@ do { \
|
||||
const int64_t __right = (int64_t)(RIGHT); \
|
||||
if (!(__left OP __right)) \
|
||||
libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
|
||||
"%s %s %s (0x%llx %s 0x%llx)", #LEFT, #OP, #RIGHT, \
|
||||
(u_longlong_t)__left, #OP, (u_longlong_t)__right); \
|
||||
"VERIFY3S(%s, %s, %s) failed " \
|
||||
"(%lld %s 0x%lld)", #LEFT, #OP, #RIGHT, \
|
||||
(longlong_t)__left, #OP, (longlong_t)__right); \
|
||||
} while (0)
|
||||
|
||||
#define VERIFY3U(LEFT, OP, RIGHT) \
|
||||
@@ -110,7 +112,8 @@ do { \
|
||||
const uint64_t __right = (uint64_t)(RIGHT); \
|
||||
if (!(__left OP __right)) \
|
||||
libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
|
||||
"%s %s %s (0x%llx %s 0x%llx)", #LEFT, #OP, #RIGHT, \
|
||||
"VERIFY3U(%s, %s, %s) failed " \
|
||||
"(%llu %s %llu)", #LEFT, #OP, #RIGHT, \
|
||||
(u_longlong_t)__left, #OP, (u_longlong_t)__right); \
|
||||
} while (0)
|
||||
|
||||
@@ -120,7 +123,8 @@ do { \
|
||||
const uintptr_t __right = (uintptr_t)(RIGHT); \
|
||||
if (!(__left OP __right)) \
|
||||
libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
|
||||
"%s %s %s (%p %s %p)", #LEFT, #OP, #RIGHT, \
|
||||
"VERIFY3P(%s, %s, %s) failed " \
|
||||
"(%p %s %p)", #LEFT, #OP, #RIGHT, \
|
||||
(void *)__left, #OP, (void *)__right); \
|
||||
} while (0)
|
||||
|
||||
@@ -129,7 +133,7 @@ do { \
|
||||
const uint64_t __left = (uint64_t)(LEFT); \
|
||||
if (!(__left == 0)) \
|
||||
libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
|
||||
"%s == 0 (0x%llx == 0)", #LEFT, \
|
||||
"VERIFY0(%s) failed (%lld)", #LEFT, \
|
||||
(u_longlong_t)__left); \
|
||||
} while (0)
|
||||
|
||||
@@ -138,7 +142,7 @@ do { \
|
||||
const uintptr_t __left = (uintptr_t)(LEFT); \
|
||||
if (!(__left == 0)) \
|
||||
libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
|
||||
"%s == 0 (%p == 0)", #LEFT, \
|
||||
"VERIFY0P(%s) failed (%p)", #LEFT, \
|
||||
(void *)__left); \
|
||||
} while (0)
|
||||
|
||||
@@ -150,13 +154,13 @@ do { \
|
||||
/* BEGIN CSTYLED */
|
||||
#define VERIFY3BF(LEFT, OP, RIGHT, STR, ...) \
|
||||
do { \
|
||||
const boolean_t __left = (boolean_t)(LEFT); \
|
||||
const boolean_t __right = (boolean_t)(RIGHT); \
|
||||
const boolean_t __left = (boolean_t)!!(LEFT); \
|
||||
const boolean_t __right = (boolean_t)!!(RIGHT); \
|
||||
if (!(__left OP __right)) \
|
||||
libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
|
||||
"%s %s %s (0x%llx %s 0x%llx) " STR, \
|
||||
#LEFT, #OP, #RIGHT, \
|
||||
(u_longlong_t)__left, #OP, (u_longlong_t)__right, \
|
||||
"VERIFY3B(%s, %s, %s) failed " \
|
||||
"(%d %s %d) " STR, #LEFT, #OP, #RIGHT, \
|
||||
__left, #OP, __right, \
|
||||
__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
@@ -166,9 +170,9 @@ do { \
|
||||
const int64_t __right = (int64_t)(RIGHT); \
|
||||
if (!(__left OP __right)) \
|
||||
libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
|
||||
"%s %s %s (0x%llx %s 0x%llx) " STR, \
|
||||
#LEFT, #OP, #RIGHT, \
|
||||
(u_longlong_t)__left, #OP, (u_longlong_t)__right, \
|
||||
"VERIFY3S(%s, %s, %s) failed " \
|
||||
"(%lld %s %lld) " STR, #LEFT, #OP, #RIGHT, \
|
||||
(longlong_t)__left, #OP, (longlong_t)__right, \
|
||||
__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
@@ -178,8 +182,8 @@ do { \
|
||||
const uint64_t __right = (uint64_t)(RIGHT); \
|
||||
if (!(__left OP __right)) \
|
||||
libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
|
||||
"%s %s %s (0x%llx %s 0x%llx) " STR, \
|
||||
#LEFT, #OP, #RIGHT, \
|
||||
"VERIFY3U(%s, %s, %s) failed " \
|
||||
"(%llu %s %llu) " STR, #LEFT, #OP, #RIGHT, \
|
||||
(u_longlong_t)__left, #OP, (u_longlong_t)__right, \
|
||||
__VA_ARGS__); \
|
||||
} while (0)
|
||||
@@ -190,20 +194,20 @@ do { \
|
||||
const uintptr_t __right = (uintptr_t)(RIGHT); \
|
||||
if (!(__left OP __right)) \
|
||||
libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
|
||||
"%s %s %s (0x%llx %s 0x%llx) " STR, \
|
||||
#LEFT, #OP, #RIGHT, \
|
||||
(u_longlong_t)__left, #OP, (u_longlong_t)__right, \
|
||||
"VERIFY3P(%s, %s, %s) failed " \
|
||||
"(%p %s %p) " STR, #LEFT, #OP, #RIGHT, \
|
||||
(void *)__left, #OP, (void *)__right, \
|
||||
__VA_ARGS__); \
|
||||
} while (0)
|
||||
/* END CSTYLED */
|
||||
|
||||
#define VERIFY0F(LEFT, STR, ...) \
|
||||
do { \
|
||||
const uint64_t __left = (uint64_t)(LEFT); \
|
||||
const int64_t __left = (int64_t)(LEFT); \
|
||||
if (!(__left == 0)) \
|
||||
libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
|
||||
"%s == 0 (0x%llx == 0) " STR, #LEFT, \
|
||||
(u_longlong_t)__left, __VA_ARGS__); \
|
||||
"VERIFY0(%s) failed (%lld) " STR, #LEFT, \
|
||||
(longlong_t)__left, __VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
#define VERIFY0PF(LEFT, STR, ...) \
|
||||
@@ -211,8 +215,8 @@ do { \
|
||||
const uintptr_t __left = (uintptr_t)(LEFT); \
|
||||
if (!(__left == 0)) \
|
||||
libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
|
||||
"%s == 0 (%p == 0) " STR, #LEFT, \
|
||||
(u_longlong_t)__left, __VA_ARGS__); \
|
||||
"VERIFY0P(%s) failed (%p) " STR, #LEFT, \
|
||||
(void *)__left, __VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
#ifdef assert
|
||||
@@ -264,10 +268,7 @@ do { \
|
||||
((void)(((!(A)) || (B)) || \
|
||||
libspl_assert("(" #A ") implies (" #B ")", \
|
||||
__FILE__, __FUNCTION__, __LINE__)))
|
||||
#define EQUIV(A, B) \
|
||||
((void)((!!(A) == !!(B)) || \
|
||||
libspl_assert("(" #A ") is equivalent to (" #B ")", \
|
||||
__FILE__, __FUNCTION__, __LINE__)))
|
||||
#define EQUIV(A, B) VERIFY3B(A, ==, B)
|
||||
|
||||
#endif /* NDEBUG */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user