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