Difference between revisions of "Zephyr"
From Wiki at Neela Nurseries
(2021-11-12 - creating new NN page regarding Zephyr RTOS logging and trace facilities, based on Zephyr release 2.6.0.) |
m (→Zephyr RTOS Logger and Backend Features) |
||
Line 32: | Line 32: | ||
<pre> | <pre> | ||
ted@localhost:~/projects/zephyr-based/z4-sandbox-kionix-work/zephyr$ grep -nr LOG_INF ./* | grep define | ted@localhost:~/projects/zephyr-based/z4-sandbox-kionix-work/zephyr$ grep -nr LOG_INF ./* | grep define | ||
+ | |||
./include/logging/log.h:61:#define LOG_INF(...) Z_LOG(LOG_LEVEL_INF, __VA_ARGS__) | ./include/logging/log.h:61:#define LOG_INF(...) Z_LOG(LOG_LEVEL_INF, __VA_ARGS__) | ||
</pre> | </pre> | ||
+ | Define of Z_LOG: | ||
+ | |||
+ | <pre> | ||
+ | ted@localhost:~/projects/zephyr-based/z4-sandbox-kionix-work/zephyr$ grep -nr 'Z_LOG[^_]' ./* | ||
+ | |||
+ | ./include/logging/log_core.h:295:#define Z_LOG2(_level, _source, _dsource, ...) do { \ | ||
+ | ./include/logging/log_core.h:329:#define Z_LOG(_level, ...) \ | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | <pre> | ||
+ | $ grep -nr 'Z_LOG[^_]' ./* | ||
+ | |||
+ | $ vi ./include/logging/log_core.h | ||
+ | 329 #define Z_LOG(_level, ...) \ | ||
+ | 330 Z_LOG2(_level, __log_current_const_data, __log_current_dynamic_data, __VA_ARGS__) | ||
+ | </pre> | ||
<!-- comentario --> | <!-- comentario --> |
Revision as of 05:54, 13 November 2021
Zephyr RTOS Logger and Backend Features
- https://docs.zephyrproject.org/2.6.0/reference/logging/index.html#logger-backend-interface
- https://docs.zephyrproject.org/2.6.0/reference/logging/index.html#default-frontend
Zephyr's thread_analyzer when not configured to dump reports to printk() instead sends thread data to LOG_INF(). Excerpt from Zephyr file `./zephyr/subsys/debug/thread_analyzer.c`:
11 #include <kernel.h> 12 #include <debug/thread_analyzer.h> 13 #include <debug/stack.h> 14 #include <kernel.h> 15 #include <logging/log.h> 16 #include <stdio.h> 17 18 LOG_MODULE_REGISTER(thread_analyzer, CONFIG_THREAD_ANALYZER_LOG_LEVEL); 19 20 #if IS_ENABLED(CONFIG_THREAD_ANALYZER_USE_PRINTK) 21 #define THREAD_ANALYZER_PRINT(...) printk(__VA_ARGS__) 22 #define THREAD_ANALYZER_FMT(str) str "\n" 23 #define THREAD_ANALYZER_VSTR(str) (str) 24 #else 25 #define THREAD_ANALYZER_PRINT(...) LOG_INF(__VA_ARGS__) 26 #define THREAD_ANALYZER_FMT(str) str 27 #define THREAD_ANALYZER_VSTR(str) log_strdup(str) 28 #endif
Zephyr macro `LOG_INF` is in turn defined:
ted@localhost:~/projects/zephyr-based/z4-sandbox-kionix-work/zephyr$ grep -nr LOG_INF ./* | grep define ./include/logging/log.h:61:#define LOG_INF(...) Z_LOG(LOG_LEVEL_INF, __VA_ARGS__)
Define of Z_LOG:
ted@localhost:~/projects/zephyr-based/z4-sandbox-kionix-work/zephyr$ grep -nr 'Z_LOG[^_]' ./* ./include/logging/log_core.h:295:#define Z_LOG2(_level, _source, _dsource, ...) do { \ ./include/logging/log_core.h:329:#define Z_LOG(_level, ...) \
$ grep -nr 'Z_LOG[^_]' ./* $ vi ./include/logging/log_core.h 329 #define Z_LOG(_level, ...) \ 330 Z_LOG2(_level, __log_current_const_data, __log_current_dynamic_data, __VA_ARGS__)