From c9788912f06232a93e07eae4483f8da39ea155c7 Mon Sep 17 00:00:00 2001 From: Travis Geiselbrecht Date: Thu, 21 Jun 2007 05:37:46 +0000 Subject: [PATCH] re-enable kernel asserts. Disabled by default, but all kernel devs are *highly* recommended to turn them on for your builds and see if it trips anything, and then fix it. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21477 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/kernel/debug.h | 23 +++++++++++++++++------ headers/private/kernel/lock.h | 7 +++++-- src/system/kernel/heap.c | 4 ++-- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/headers/private/kernel/debug.h b/headers/private/kernel/debug.h index 28cf902250..d7e88d030b 100644 --- a/headers/private/kernel/debug.h +++ b/headers/private/kernel/debug.h @@ -11,23 +11,34 @@ #include -struct kernel_args; - +//#define DEBUG 1 #if DEBUG -# define ASSERT(x) \ - if (x) {} else { panic("ASSERT FAILED (%s:%d): %s\n", __FILE__, __LINE__, #x); } +/* + * The kernel debug level. + * Level 1 is usual asserts, > 1 should be used for very expensive runtime checks + */ +#define KDEBUG 1 +#endif + +#define ASSERT_ALWAYS(x) \ + do { if (!(x)) { panic("ASSERT FAILED (%s:%d): %s\n", __FILE__, __LINE__, #x); } } while (0) + +#if KDEBUG +#define ASSERT(x) ASSERT_ALWAYS(x) #else -# define ASSERT(x) +#define ASSERT(x) \ + do { } while(0) #endif extern int dbg_register_file[B_MAX_CPU_COUNT][14]; - #ifdef __cplusplus extern "C" { #endif +struct kernel_args; + extern status_t debug_init(struct kernel_args *args); extern status_t debug_init_post_vm(struct kernel_args *args); extern status_t debug_init_post_modules(struct kernel_args *args); diff --git a/headers/private/kernel/lock.h b/headers/private/kernel/lock.h index 915fdfac51..0d19da5488 100644 --- a/headers/private/kernel/lock.h +++ b/headers/private/kernel/lock.h @@ -39,11 +39,14 @@ typedef struct rw_lock { #define RW_MAX_READERS 1000000 -#ifdef DEBUG +#if 0 && KDEBUG // XXX disable this for now, it causes problems when including thread.h here # include -#endif #define ASSERT_LOCKED_RECURSIVE(r) { ASSERT(thread_get_current_thread_id() == (r)->holder); } #define ASSERT_LOCKED_MUTEX(m) { ASSERT(thread_get_current_thread_id() == (m)->holder); } +#else +#define ASSERT_LOCKED_RECURSIVE(r) +#define ASSERT_LOCKED_MUTEX(m) +#endif #ifdef __cplusplus diff --git a/src/system/kernel/heap.c b/src/system/kernel/heap.c index 4258753475..55f2902058 100644 --- a/src/system/kernel/heap.c +++ b/src/system/kernel/heap.c @@ -28,7 +28,7 @@ #endif /* prevent freeing pointers that were not allocated by kmalloc or are already freeed */ -#ifdef DEBUG +#if KDEBUG > 1 # define PARANOID_POINTER_CHECK 1 #else # define PARANOID_POINTER_CHECK 0 @@ -125,7 +125,7 @@ struct list sWalls; #if PARANOID_POINTER_CHECK -#define PTRCHECKLIST_ENTRIES 8192 +#define PTRCHECKLIST_ENTRIES 32768 static void *ptrchecklist[PTRCHECKLIST_ENTRIES]; /* automatically initialized to zero */ static void