From abae461c3b81b77966c8adfae5438a8b0a813c6b Mon Sep 17 00:00:00 2001 From: Tim Pambor Date: Mon, 23 Jun 2025 11:28:16 +0200 Subject: [PATCH] logging: Skip messages generated by logging thread --- include/zephyr/logging/log_internal.h | 2 ++ subsys/logging/log_core.c | 6 +++--- subsys/logging/log_msg.c | 4 ++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/include/zephyr/logging/log_internal.h b/include/zephyr/logging/log_internal.h index cc2c8bd0ec648..e1155d48d6644 100644 --- a/include/zephyr/logging/log_internal.h +++ b/include/zephyr/logging/log_internal.h @@ -163,6 +163,8 @@ static inline bool z_log_is_local_domain(uint8_t domain_id) */ log_timestamp_t z_log_timestamp(void); +extern k_tid_t log_core_proc_tid; + #ifdef __cplusplus } #endif diff --git a/subsys/logging/log_core.c b/subsys/logging/log_core.c index f5fb7c59101e6..e02aeb1aa7313 100644 --- a/subsys/logging/log_core.c +++ b/subsys/logging/log_core.c @@ -104,7 +104,7 @@ static bool panic_mode; static bool backend_attached; static atomic_t buffered_cnt; static atomic_t dropped_cnt; -static k_tid_t proc_tid; +k_tid_t log_core_proc_tid; static struct k_timer log_process_thread_timer; static log_timestamp_t dummy_timestamp(void); @@ -168,7 +168,7 @@ static void z_log_msg_post_finalize(void) (void)log_process(); k_spin_unlock(&process_lock, key); - } else if (proc_tid != NULL) { + } else if (log_core_proc_tid != NULL) { /* * If CONFIG_LOG_PROCESS_TRIGGER_THRESHOLD == 1, * timer is never needed. We release the processing @@ -386,7 +386,7 @@ void log_thread_trigger(void) static void thread_set(k_tid_t process_tid) { - proc_tid = process_tid; + log_core_proc_tid = process_tid; if (IS_ENABLED(CONFIG_LOG_MODE_IMMEDIATE)) { return; diff --git a/subsys/logging/log_msg.c b/subsys/logging/log_msg.c index f9b760f1e58f3..4b6455885eec7 100644 --- a/subsys/logging/log_msg.c +++ b/subsys/logging/log_msg.c @@ -289,6 +289,10 @@ void z_impl_z_log_msg_static_create(const void *source, return; } + // Do not log messages generated by logging thread + if(log_core_proc_tid == k_current_get()) + return; + struct log_msg_desc out_desc = desc; int inlen = desc.package_len; struct log_msg *msg;