Changeset 491 for trunk/kernel/kern/printk.h
- Timestamp:
- Aug 22, 2018, 11:55:11 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kernel/kern/printk.h
r457 r491 44 44 #include <stdarg.h> 45 45 46 #include <hal_special.h> // hal_get_cycles() 46 47 47 48 /********************************************************************************** … … 82 83 void nolock_printk( char* format, ... ); 83 84 84 /********************************************************************************** 85 * This function displays a formated message on kernel TXT0 terminal, 85 86 /********************************************************************************** 87 * Private function designed to be called by the assert macro (below) 88 ********************************************************************************** 89 * @ file_name : File where the assert macro was invoked 90 * @ function_name : Name of the calling function. 91 * @ line : Line number where the assert macro was invoked 92 * @ cycle : Cycle where the macro was invoked 93 * @ format : Formatted string 94 * ... : arguments of the format string 95 * 96 * See assert macro documentation for information about printed information. 97 *********************************************************************************/ 98 void __panic( const char * file_name, 99 const char * function_name, 100 uint32_t line, 101 cycle_t cycle, 102 const char * format, ... ) 103 __attribute__((__noreturn__)); 104 105 /********************************************************************************** 106 * This macro displays a formated message on kernel TXT0 terminal, 86 107 * and forces the calling core in sleeping mode if a Boolean condition is false. 87 * This function is actually used to debug the kernel... 108 * Actually used to debug the kernel. 109 * 110 * Information printed by assert: 111 * Current running thread: 112 * - thread descriptior adress 113 * - thread id (trdid) 114 * 115 * Current Process: 116 * - Process descriptor adress 117 * - Process id (pid) 118 * 119 * Current Core: 120 * - local cluster position (local_cxy) 121 * - local core id (lid) 122 * 123 * File name (__FILE__) and were the assert is invoked. 124 * And the assert message. 125 * 126 * Cycle: before the assert branchment. 127 * Note: cycle may change due to compiler optimisation. 128 * 129 * Exemple: 130 * assert( my_ptr != NULL, "my_ptr should not be NULL") 88 131 ********************************************************************************** 89 132 * @ condition : condition that must be true. 90 * @ function_name : name of the calling function.91 133 * @ format : formatted string 92 134 *********************************************************************************/ 93 void assert( bool_t condition, 94 const char * function_name, 95 char * format , ... ); 135 #define assert( expr, format, ... ) { uint32_t __line_at_expansion = __LINE__; \ 136 const volatile cycle_t __assert_cycle = hal_get_cycles(); \ 137 if ( ( expr ) == false ) { \ 138 __panic( __FILE__, __FUNCTION__, \ 139 __line_at_expansion, __assert_cycle, \ 140 ( format ), ##__VA_ARGS__ ); \ 141 } \ 142 } 96 143 97 144 /**********************************************************************************
Note: See TracChangeset
for help on using the changeset viewer.