Use more descriptive error messages for invalid stacks in proc_new()
authorlottaviano <lottaviano@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 15 Feb 2011 13:32:19 +0000 (13:32 +0000)
committerlottaviano <lottaviano@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 15 Feb 2011 13:32:19 +0000 (13:32 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@4706 38d2e660-2303-0410-9eaa-f027e97ec537

bertos/cfg/debug.h
bertos/kern/proc.c

index 257682933d3fcf7576e79e8f2d68c79ab05e5066..efa26e18907a8102699d3ca125cf099abf43dbf3 100644 (file)
                #define ASSERT2(x, help)  ((void)ASSERT(x))
        #endif
 
+       #define IS_VALID_PTR(p) (LIKELY((void *)(p) >= (void *)CPU_RAM_START))
        /**
         * Check that the given pointer is either NULL or pointing to valid memory.
         *
         *
         * \see ASSERT_VALID_PTR_OR_NULL()
         */
-       #define ASSERT_VALID_PTR(p) ((void)(LIKELY((void *)(p) >= (void *)CPU_RAM_START) \
-               ? 0 : __invalid_ptr(p, #p, THIS_FILE, __LINE__)))
+       #define ASSERT_VALID_PTR(p) (IS_VALID_PTR(p) \
+               ? 0 : __invalid_ptr(p, #p, THIS_FILE, __LINE__))
 
        /**
         * Check that the given pointer is not pointing to invalid memory.
                #define ASSERT(x)  ((void)0)
        #endif /* ASSERT */
        #define ASSERT2(x, help)             ((void)0)
+       #define IS_VALID_PTR(p)              (1)
        #define ASSERT_VALID_PTR(p)          ((void)0)
        #define ASSERT_VALID_PTR_OR_NULL(p)  ((void)0)
        #define ASSERT_VALID_OBJ(_t, _o)     ((void)0)
index 781bd5532ab3846c0b5de51f2a5c2f48283fa09f..0bc046f803533999d3f52c46b3ff87b9e6803886 100644 (file)
@@ -323,8 +323,9 @@ struct Process *proc_new_with_name(UNUSED_ARG(const char *, name), void (*entry)
 #else // CONFIG_KERN_HEAP
 
        /* Stack must have been provided by the user */
-       ASSERT_VALID_PTR(stack_base);
-       ASSERT(stack_size);
+       ASSERT2(IS_VALID_PTR(stack_base), "Invalid stack pointer. Did you forget to \
+               enable CONFIG_KERN_HEAP?");
+       ASSERT2(stack_size, "Stack size cannot be 0.");
 
 #endif // CONFIG_KERN_HEAP