Browse Source

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>
(cherry picked from commit f840a35be3)
backport-84955-to-v3.7-branch
Yong Cong Sin 5 months ago committed by github-actions[bot]
parent
commit
2cfbc493be
  1. 2
      include/zephyr/logging/log_backend.h
  2. 14
      subsys/logging/log_cmds.c

2
include/zephyr/logging/log_backend.h

@ -83,6 +83,7 @@ struct log_backend_control_block { @@ -83,6 +83,7 @@ struct log_backend_control_block {
void *ctx;
uint8_t id;
bool active;
bool initialized;
/* Initialization level. */
uint8_t level;
@ -140,6 +141,7 @@ static inline void log_backend_init(const struct log_backend *const backend) @@ -140,6 +141,7 @@ static inline void log_backend_init(const struct log_backend *const backend)
if (backend->api->init) {
backend->api->init(backend);
}
backend->cb->initialized = true;
}
/**

14
subsys/logging/log_cmds.c

@ -342,7 +342,19 @@ static int log_go(const struct shell *sh, @@ -342,7 +342,19 @@ static int log_go(const struct shell *sh,
char **argv)
{
if (backend || !IS_ENABLED(CONFIG_LOG_FRONTEND)) {
log_backend_activate(backend, backend->cb->ctx);
if (!backend->cb->initialized) {
log_backend_init(backend);
while (log_backend_is_ready(backend) != 0) {
if (IS_ENABLED(CONFIG_MULTITHREADING)) {
k_msleep(10);
}
}
if (log_backend_is_ready(backend) == 0) {
log_backend_enable(backend, backend->cb->ctx, CONFIG_LOG_MAX_LEVEL);
}
} else {
log_backend_activate(backend, backend->cb->ctx);
}
return 0;
}

Loading…
Cancel
Save