Skip to content

Commit f840a35

Browse files
ycsinkartben
authored andcommitted
logging: log_cmds: init uninitialized backend on log_go()
For backends that do not autostart themselves, initialize & enable them on `log backend <log_backend_*> go`, so that they function properly. Signed-off-by: Yong Cong Sin <ycsin@meta.com> Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
1 parent 8dd9d92 commit f840a35

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

include/zephyr/logging/log_backend.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ struct log_backend_control_block {
8383
void *ctx;
8484
uint8_t id;
8585
bool active;
86+
bool initialized;
8687

8788
/* Initialization level. */
8889
uint8_t level;
@@ -140,6 +141,7 @@ static inline void log_backend_init(const struct log_backend *const backend)
140141
if (backend->api->init) {
141142
backend->api->init(backend);
142143
}
144+
backend->cb->initialized = true;
143145
}
144146

145147
/**

subsys/logging/log_cmds.c

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,19 @@ static int log_go(const struct shell *sh,
341341
char **argv)
342342
{
343343
if (backend || !IS_ENABLED(CONFIG_LOG_FRONTEND)) {
344-
log_backend_activate(backend, backend->cb->ctx);
344+
if (!backend->cb->initialized) {
345+
log_backend_init(backend);
346+
while (log_backend_is_ready(backend) != 0) {
347+
if (IS_ENABLED(CONFIG_MULTITHREADING)) {
348+
k_msleep(10);
349+
}
350+
}
351+
if (log_backend_is_ready(backend) == 0) {
352+
log_backend_enable(backend, backend->cb->ctx, CONFIG_LOG_MAX_LEVEL);
353+
}
354+
} else {
355+
log_backend_activate(backend, backend->cb->ctx);
356+
}
345357
return 0;
346358
}
347359

0 commit comments

Comments
 (0)