zephyr: Fix call to thread_analyzer_print for v4.0.

Commit 1b6e0f64796dfd6f86a8679ea6d24e1fca1e63a8 for Zephyr v4.0.0
changed the function "thread_analyzer_print" to require a cpu argument
and allow thread analysis on each cpu separately. The argument is
ignored when THREAD_ANALYZER_AUTO_SEPARATE_CORES=n which is the
default on single core machines.

Promote this change to the MicroPython zephyr module.

Signed-off-by: Detlev Zundel <dzu@member.fsf.org>
Signed-off-by: Maureen Helm <maureen.helm@analog.com>
This commit is contained in:
Detlev Zundel
2025-02-06 16:45:25 +01:00
committed by Damien George
parent cd71db0172
commit cd3eaad05c
2 changed files with 14 additions and 4 deletions

View File

@@ -22,9 +22,10 @@ Functions
Returns the thread id of the current thread, which is used to reference the thread. Returns the thread id of the current thread, which is used to reference the thread.
.. function:: thread_analyze() .. function:: thread_analyze(cpu)
Runs the Zephyr debug thread analyzer on the current thread and prints stack size statistics in the format: Runs the Zephyr debug thread analyzer on the current thread on the given cpu
and prints stack size statistics in the format:
"``thread_name``-20s: STACK: unused ``available_stack_space`` usage ``stack_space_used`` "``thread_name``-20s: STACK: unused ``available_stack_space`` usage ``stack_space_used``
/ ``stack_size`` (``percent_stack_space_used`` %); CPU: ``cpu_utilization`` %" / ``stack_size`` (``percent_stack_space_used`` %); CPU: ``cpu_utilization`` %"
@@ -35,6 +36,9 @@ Functions
For more information, see documentation for Zephyr `thread analyzer For more information, see documentation for Zephyr `thread analyzer
<https://docs.zephyrproject.org/latest/guides/debug_tools/thread-analyzer.html#thread-analyzer>`_. <https://docs.zephyrproject.org/latest/guides/debug_tools/thread-analyzer.html#thread-analyzer>`_.
Note that the ``cpu`` argument is only used in Zephyr v4.0.0 and
newer and ignored otherwise.
.. function:: shell_exec(cmd_in) .. function:: shell_exec(cmd_in)
Executes the given command on an UART backend. This function can only be accessed if ``CONFIG_SHELL_BACKEND_SERIAL`` Executes the given command on an UART backend. This function can only be accessed if ``CONFIG_SHELL_BACKEND_SERIAL``

View File

@@ -30,6 +30,7 @@
#include <stdio.h> #include <stdio.h>
#include <zephyr/kernel.h> #include <zephyr/kernel.h>
#include <zephyr/version.h>
#include <zephyr/debug/thread_analyzer.h> #include <zephyr/debug/thread_analyzer.h>
#include <zephyr/shell/shell.h> #include <zephyr/shell/shell.h>
#include <zephyr/shell/shell_uart.h> #include <zephyr/shell/shell_uart.h>
@@ -48,11 +49,16 @@ static mp_obj_t mod_current_tid(void) {
static MP_DEFINE_CONST_FUN_OBJ_0(mod_current_tid_obj, mod_current_tid); static MP_DEFINE_CONST_FUN_OBJ_0(mod_current_tid_obj, mod_current_tid);
#ifdef CONFIG_THREAD_ANALYZER #ifdef CONFIG_THREAD_ANALYZER
static mp_obj_t mod_thread_analyze(void) { static mp_obj_t mod_thread_analyze(mp_obj_t cpu_in) {
#if KERNEL_VERSION_NUMBER >= ZEPHYR_VERSION(4, 0, 0)
unsigned int cpu = mp_obj_get_int(cpu_in);
thread_analyzer_print(cpu);
#else
thread_analyzer_print(); thread_analyzer_print();
#endif
return mp_const_none; return mp_const_none;
} }
static MP_DEFINE_CONST_FUN_OBJ_0(mod_thread_analyze_obj, mod_thread_analyze); static MP_DEFINE_CONST_FUN_OBJ_1(mod_thread_analyze_obj, mod_thread_analyze);
#endif #endif
#ifdef CONFIG_SHELL_BACKEND_SERIAL #ifdef CONFIG_SHELL_BACKEND_SERIAL