#include <kern/assert.h>

kern/assert.h Kernel.framework

16 macros · 3 structs · 1 function · 1 variable · 1 enum · 1 typedef

functionAssert

__attribute__((noinline))
__abortlike extern void Assert(const char *file, int line, const char *expression)
claude-fable-5, 2026-08-24 · not from Apple sources · verified against xnu osfmk/kern/debug.c
Reports a failed kernel assertion by calling panic_plain with a message of the form "file:line Assertion failed: expression". Called by the assert() and assertf() macros when MACH_ASSERT is configured; not normally invoked directly. Does not return.

variablekext_assertions_enable

extern int kext_assertions_enable

macroAPPLE_KEXT_ASSERTIONS

#define APPLE_KEXT_ASSERTIONS 0

enummach_assert_type_t

underlying type unsigned char
MACH_ASSERT_DEFAULT0
MACH_ASSERT_3P1
MACH_ASSERT_3S2
MACH_ASSERT_3U3

typedefmach_assert_type_t

typedef enum mach_assert_type_t mach_assert_type_t;

macroMACH_ASSERT_DESC_ALIGN

#define MACH_ASSERT_DESC_ALIGN __attribute__((packed, aligned(4)))

structmach_assert_hdr

size 12, align 4 · packed
mach_assert_type_ttype
unsigned int:24lineno
const char *filename

structmach_assert_default

size 20, align 4 · packed
struct mach_assert_hdrhdr
const char *expr

structmach_assert_3x

size 36, align 4 · packed
struct mach_assert_hdrhdr
const char *a
const char *op
const char *b

macromach_assert_enabled

#define mach_assert_enabled() 0

macroMACH_ASSERT_TRAP_CODE

#define MACH_ASSERT_TRAP_CODE 0xbffc
XNU_HARD_TRAP_ASSERT_FAILURE

macroMACH_ASSERT_SEGSECT

#define MACH_ASSERT_SEGSECT "__DATA_CONST,__assert"

macroMACH_ASSERT_DO

@abstract Wrap any arbitrary expression/code behind a conditional on whether assertions are enabled.
#define MACH_ASSERT_DO(...) ({
	if (mach_assert_enabled()) {
	        __VA_ARGS__;
	}
})

macromach_assert_abort

#define mach_assert_abort(reason) ({
	__attribute__((used, section(MACH_ASSERT_SEGSECT)))
	static const struct mach_assert_default __desc = {
	        { MACH_ASSERT_DEFAULT, __LINE__, __FILE_NAME__, },
	        reason,
	};

	ml_fatal_trap_with_value(MACH_ASSERT_TRAP_CODE, &__desc);
})

macromach_assert_abort3x

#define mach_assert_abort3x(how, s_a, s_op, s_b, v_a, v_b) ({
	__attribute__((used, section(MACH_ASSERT_SEGSECT)))
	static const struct mach_assert_3x __desc_ ## how = {
	        { MACH_ASSERT_ ## how, __LINE__, __FILE_NAME__, },
	        s_a, s_op, s_b,
	};

	ml_fatal_trap_with_value3(MACH_ASSERT_TRAP_CODE,
	    &__desc_ ## how, v_a, v_b);
})

macrorelease_assert

@abstract assert() that is never elided or removed even in release builds.
#define release_assert(ex) ({
	if (__builtin_expect(!(ex), 0L)) {
	        mach_assert_abort(#ex);
	}
})

macromach_assert_enabled_expr

#define mach_assert_enabled_expr(ex) 0

macroassert

#define assert(ex) ((void)0)

macroassertf

#define assertf(ex, fmt, args, ...) ((void)0)

macroassert3s

#define assert3s(a, op, b) ((void)0)

macroassert3u

#define assert3u(a, op, b) ((void)0)

macroassert3p

#define assert3p(a, op, b) ((void)0)

macro_static_assert_1_arg

C++11 only supports the 2 argument version of static_assert. C++1z has added support for the 1 argument version.
#define _static_assert_1_arg(ex) static_assert((ex), #ex)