Difference between revisions of "Zephyr"

From Wiki at Neela Nurseries
Jump to: navigation, search
(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

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__)