13#ifndef ZEPHYR_INCLUDE_LOGGING_LOG_BACKEND_H_
14#define ZEPHYR_INCLUDE_LOGGING_LOG_BACKEND_H_
77 union log_msg_generic *msg);
134#define LOG_BACKEND_DEFINE(_name, _api, _autostart, ...) \
135 static struct log_backend_control_block UTIL_CAT(backend_cb_, _name) = \
137 COND_CODE_0(NUM_VA_ARGS_LESS_1(_, ##__VA_ARGS__), \
138 (), (.ctx = __VA_ARGS__,)) \
142 static const STRUCT_SECTION_ITERABLE(log_backend, _name) = \
145 .cb = &UTIL_CAT(backend_cb_, _name), \
146 .name = STRINGIFY(_name), \
147 .autostart = _autostart \
163 __ASSERT_NO_MSG(backend !=
NULL);
167 backend->
cb->initialized =
true;
183 __ASSERT_NO_MSG(backend !=
NULL);
201 union log_msg_generic *msg)
203 __ASSERT_NO_MSG(backend !=
NULL);
204 __ASSERT_NO_MSG(msg !=
NULL);
219 __ASSERT_NO_MSG(backend !=
NULL);
233 __ASSERT_NO_MSG(backend !=
NULL);
248 __ASSERT_NO_MSG(backend !=
NULL);
249 backend->
cb->id = id;
262 __ASSERT_NO_MSG(backend !=
NULL);
263 return backend->
cb->id;
305 __ASSERT_NO_MSG(backend !=
NULL);
306 backend->
cb->ctx = ctx;
307 backend->
cb->active =
true;
318 __ASSERT_NO_MSG(backend !=
NULL);
319 backend->
cb->active =
false;
332 __ASSERT_NO_MSG(backend !=
NULL);
333 return backend->
cb->active;
347 extern size_t log_format_table_size(
void);
349 if ((
size_t)log_type >= log_format_table_size()) {
357 if (backend ==
NULL) {
379 __ASSERT_NO_MSG(backend !=
NULL);
382 backend->
api->
notify(backend, event, arg);
#define STRUCT_SECTION_GET(struct_type, i, dst)
Get element from section.
Definition iterable_sections.h:337
#define STRUCT_SECTION_COUNT(struct_type, dst)
Count elements in a section.
Definition iterable_sections.h:346
static void log_backend_init(const struct log_backend *const backend)
Initialize or initiate the logging backend.
Definition log_backend.h:161
log_backend_evt
Backend events.
Definition log_backend.h:41
static void log_backend_deactivate(const struct log_backend *const backend)
Deactivate backend.
Definition log_backend.h:315
static void log_backend_msg_process(const struct log_backend *const backend, union log_msg_generic *msg)
Process message.
Definition log_backend.h:200
static void log_backend_activate(const struct log_backend *const backend, void *ctx)
Activate backend.
Definition log_backend.h:302
static bool log_backend_is_active(const struct log_backend *const backend)
Check state of the backend.
Definition log_backend.h:329
static void log_backend_id_set(const struct log_backend *const backend, uint8_t id)
Set backend id.
Definition log_backend.h:245
static void log_backend_dropped(const struct log_backend *const backend, uint32_t cnt)
Notify backend about dropped log messages.
Definition log_backend.h:216
static int log_backend_format_set(const struct log_backend *backend, uint32_t log_type)
Set logging format.
Definition log_backend.h:345
static int log_backend_count_get(void)
Get number of backends.
Definition log_backend.h:287
static void log_backend_panic(const struct log_backend *const backend)
Reconfigure backend to panic mode.
Definition log_backend.h:231
static uint8_t log_backend_id_get(const struct log_backend *const backend)
Get backend id.
Definition log_backend.h:260
static void log_backend_notify(const struct log_backend *const backend, enum log_backend_evt event, union log_backend_evt_arg *arg)
Notify a backend of an event.
Definition log_backend.h:375
static const struct log_backend * log_backend_get(uint32_t idx)
Get backend.
Definition log_backend.h:273
static int log_backend_is_ready(const struct log_backend *const backend)
Poll for backend readiness.
Definition log_backend.h:181
@ LOG_BACKEND_EVT_PROCESS_THREAD_DONE
Event when process thread finishes processing.
Definition log_backend.h:53
@ LOG_BACKEND_EVT_MAX
Maximum number of backend events.
Definition log_backend.h:56
log_format_func_t log_format_func_t_get(uint32_t log_type)
Declaration of the get routine for function pointer table format_table.
#define EINVAL
Invalid argument.
Definition errno.h:61
#define ENOTSUP
Unsupported value.
Definition errno.h:115
#define NULL
Definition iar_missing_defs.h:20
Header file for log messages.
Header file for the log output formatter.
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Logger backend API.
Definition log_backend.h:74
void(* panic)(const struct log_backend *const backend)
Mandatory: switch the backend to panic (blocking) mode.
Definition log_backend.h:82
void(* process)(const struct log_backend *const backend, union log_msg_generic *msg)
Mandatory: process a single log message (see log_backend_msg_process()).
Definition log_backend.h:76
void(* notify)(const struct log_backend *const backend, enum log_backend_evt event, union log_backend_evt_arg *arg)
Optional: handle a backend event (see log_backend_notify()).
Definition log_backend.h:92
void(* dropped)(const struct log_backend *const backend, uint32_t cnt)
Optional: report number of dropped messages (see log_backend_dropped()).
Definition log_backend.h:80
int(* is_ready)(const struct log_backend *const backend)
Optional: poll for backend readiness (see log_backend_is_ready()).
Definition log_backend.h:86
void(* init)(const struct log_backend *const backend)
Optional: initialize the backend (see log_backend_init()).
Definition log_backend.h:84
int(* format_set)(const struct log_backend *const backend, uint32_t log_type)
Optional: set the output format type (see log_backend_format_set()).
Definition log_backend.h:88
Logger backend control block.
Definition log_backend.h:103
Logger backend structure.
Definition log_backend.h:118
const char * name
Unique backend name.
Definition log_backend.h:121
const struct log_backend_api * api
Backend operations.
Definition log_backend.h:119
struct log_backend_control_block * cb
Run-time control block.
Definition log_backend.h:120
bool autostart
Enable the backend automatically at logger startup.
Definition log_backend.h:122
Iterable sections helpers.
Argument(s) for backend events.
Definition log_backend.h:62
void * raw
Unspecified argument(s).
Definition log_backend.h:64