Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/debug.h

    rb83ba81 rda52547  
    3737
    3838#include <panic.h>
    39 #include <arch/debug.h>
     39#include <symtab.h>
    4040
    41 #define CALLER ((uintptr_t) __builtin_return_address(0))
     41#define CALLER  ((uintptr_t) __builtin_return_address(0))
    4242
    43 #ifndef HERE
    44 /** Current Instruction Pointer address */
    45 #       define HERE ((uintptr_t *) 0)
    46 #endif
     43#ifdef CONFIG_DEBUG
    4744
    4845/** Debugging ASSERT macro
     
    5552 *
    5653 */
    57 #ifdef CONFIG_DEBUG
    58 #       define ASSERT(expr) \
    59                 if (!(expr)) { \
    60                         panic("Assertion failed (%s), caller=%p.", #expr, CALLER); \
    61                 }
    62 #else
    63 #       define ASSERT(expr)
    64 #endif
     54#define ASSERT(expr) \
     55        do { \
     56                if (!(expr)) \
     57                        panic_assert("%s", #expr); \
     58        } while (0)
     59
     60/** Debugging verbose ASSERT macro
     61 *
     62 * If CONFIG_DEBUG is set, the ASSERT() macro
     63 * evaluates expr and if it is false raises
     64 * kernel panic. The panic message contains also
     65 * the supplied message.
     66 *
     67 * @param expr Expression which is expected to be true.
     68 * @param msg  Additional message to show (string).
     69 *
     70 */
     71#define ASSERT_VERBOSE(expr, msg) \
     72        do { \
     73                if (!(expr)) \
     74                        panic_assert("%s, %s", #expr, msg); \
     75        } while (0)
     76
     77#else /* CONFIG_DEBUG */
     78
     79#define ASSERT(expr)
     80#define ASSERT_VERBOSE(expr, msg)
     81
     82#endif /* CONFIG_DEBUG */
     83
     84#ifdef CONFIG_LOG
    6585
    6686/** Extensive logging output macro
     
    7191 *
    7292 */
     93#define LOG(format, ...) \
     94        do { \
     95                printf("%s() from %s at %s:%u: " format "\n", __func__, \
     96                    symtab_fmt_name_lookup(CALLER), __FILE__, __LINE__, \
     97                    ##__VA_ARGS__); \
     98        } while (0)
    7399
    74 #ifdef CONFIG_LOG
    75 #       define LOG(format, ...) \
    76                 printf("%s() at %s:%u: " format "\n", __func__, __FILE__, \
    77                     __LINE__, ##__VA_ARGS__);
    78 #else
    79 #       define LOG(format, ...)
    80 #endif
     100#else /* CONFIG_LOG */
    81101
    82 /** Extensive logging execute macro
    83  *
    84  * If CONFIG_LOG is set, the LOG_EXEC() macro
    85  * will print an information about calling a given
    86  * function and call it.
    87  *
    88  */
     102#define LOG(format, ...)
    89103
    90 #ifdef CONFIG_LOG
    91 #       define LOG_EXEC(fnc) \
    92                 { \
    93                         printf("%s() at %s:%u: " #fnc "\n", __func__, __FILE__, \
    94                             __LINE__); \
    95                         fnc; \
    96                 }
    97 #else
    98 #       define LOG_EXEC(fnc) fnc
    99 #endif
     104#endif /* CONFIG_LOG */
    100105
     106#ifdef CONFIG_TRACE
     107
     108extern void __cyg_profile_func_enter(void *, void *);
     109extern void __cyg_profile_func_exit(void *, void *);
     110
     111#endif /* CONFIG_TRACE */
    101112
    102113#endif
Note: See TracChangeset for help on using the changeset viewer.