Commit 7cfc1539 authored by Yong Cong Sin's avatar Yong Cong Sin Committed by Anas Nashif
Browse files

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: default avatarYong Cong Sin <ycsin@meta.com>
Signed-off-by: default avatarYong Cong Sin <yongcong.sin@gmail.com>
parent 97976e74
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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)
	if (backend->api->init) {
		backend->api->init(backend);
	}
	backend->cb->initialized = true;
}

/**
+13 −1
Original line number Diff line number Diff line
@@ -342,7 +342,19 @@ static int log_go(const struct shell *sh,
		  char **argv)
{
	if (backend || !IS_ENABLED(CONFIG_LOG_FRONTEND)) {
		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;
	}