The branch main has been updated by kib:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=61ae7a355ce787aecd84dc35a047f458a5b5b1fb

commit 61ae7a355ce787aecd84dc35a047f458a5b5b1fb
Author:     Konstantin Belousov <k...@freebsd.org>
AuthorDate: 2022-06-29 11:37:04 +0000
Commit:     Konstantin Belousov <k...@freebsd.org>
CommitDate: 2022-06-29 18:31:47 +0000

    Add MPASSERT() and MPPASS() macros
    
    Suggested by:   mjg
    Reviewed by:    imp, mjg
    Tested by:      pho
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Differential revision:  https://reviews.freebsd.org/D35652
---
 sys/sys/kassert.h | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/sys/sys/kassert.h b/sys/sys/kassert.h
index bb6847dc404f..d7c1a21385f9 100644
--- a/sys/sys/kassert.h
+++ b/sys/sys/kassert.h
@@ -46,19 +46,35 @@ extern bool panicked;
                kassert_panic msg;                                      \
        }                                                               \
 } while (0)
+#define        MPASSERT(exp, mp, msg) do {                                     
\
+       if (__predict_false(!(exp))) {                                  \
+               printf("MPASSERT mp %p failed: %s not true at %s:%d (%s)\n",\
+                   (mp), #exp, __FILE__, __LINE__, __func__);          \
+               kassert_panic msg;                                      \
+       }                                                               \
+} while (0)
 #define        VNPASS(exp, vp) do {                                            
\
        const char *_exp = #exp;                                        \
        VNASSERT(exp, vp, ("condition %s not met at %s:%d (%s)",        \
            _exp, __FILE__, __LINE__, __func__));                       \
 } while (0)
+#define        MPPASS(exp, mp) do {                                            
\
+       const char *_exp = #exp;                                        \
+       MPASSERT(exp, mp, ("condition %s not met at %s:%d (%s)",        \
+           _exp, __FILE__, __LINE__, __func__));                       \
+} while (0)
 #define        __assert_unreachable() \
        panic("executing segment marked as unreachable at %s:%d (%s)\n", \
            __FILE__, __LINE__, __func__)
 #else  /* INVARIANTS */
 #define        VNASSERT(exp, vp, msg) do { \
 } while (0)
+#define        MPASSERT(exp, mp, msg) do { \
+} while (0)
 #define        VNPASS(exp, vp) do { \
 } while (0)
+#define        MPPASS(exp, mp) do { \
+} while (0)
 #define        __assert_unreachable()  __unreachable()
 #endif /* INVARIANTS */
 

Reply via email to