Zephyr Project API 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
log_instance.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
12
13#ifndef ZEPHYR_INCLUDE_LOGGING_LOG_INSTANCE_H_
14#define ZEPHYR_INCLUDE_LOGGING_LOG_INSTANCE_H_
15
16#include <zephyr/types.h>
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
24
26struct log_source_const_data {
27 const char *name;
28 uint8_t level;
29};
30
32struct log_source_dynamic_data {
33 uint32_t filters;
34#if defined(CONFIG_64BIT)
35 /* Workaround: Ensure that structure size is a multiple of 8 bytes. */
36 uint32_t dummy_64;
37#endif
38};
39
41
46
51
58#define Z_LOG_ITEM_CONST_DATA(_name) UTIL_CAT(log_const_, _name)
59
71#define Z_LOG_CONST_ITEM_REGISTER(_name, _str_name, _level) \
72 const STRUCT_SECTION_ITERABLE_ALTERNATE(log_const, \
73 log_source_const_data, \
74 Z_LOG_ITEM_CONST_DATA(_name)) = \
75 { \
76 .name = _str_name, \
77 .level = (_level), \
78 }
79
88#define LOG_OBJECT_PTR_INIT(_name, _object) \
89 IF_ENABLED(CONFIG_LOG, (._name = _object,))
90
95#define Z_LOG_INSTANCE_FULL_NAME(_module_name, _inst_name) \
96 UTIL_CAT(_module_name, UTIL_CAT(_, _inst_name))
97
107#define Z_LOG_OBJECT_PTR(_name) \
108 COND_CODE_1(CONFIG_LOG_RUNTIME_FILTERING, \
109 (&LOG_ITEM_DYNAMIC_DATA(_name)), \
110 (&Z_LOG_ITEM_CONST_DATA(_name))) \
111
121#define LOG_INSTANCE_PTR(_module_name, _inst_name) \
122 Z_LOG_OBJECT_PTR(Z_LOG_INSTANCE_FULL_NAME(_module_name, _inst_name))
123
136#define LOG_INSTANCE_PTR_INIT(_name, _module_name, _inst_name) \
137 LOG_OBJECT_PTR_INIT(_name, LOG_INSTANCE_PTR(_module_name, _inst_name))
138
139#define Z_LOG_INSTANCE_STRUCT \
140 COND_CODE_1(CONFIG_LOG_RUNTIME_FILTERING, \
141 (struct log_source_dynamic_data), \
142 (const struct log_source_const_data))
143
154#define LOG_INSTANCE_PTR_DECLARE(_name) \
155 COND_CODE_1(CONFIG_LOG, (Z_LOG_INSTANCE_STRUCT * _name), \
156 (int _name[TOOLCHAIN_HAS_ZLA ? 0 : 1]))
157
158#define Z_LOG_RUNTIME_INSTANCE_REGISTER(_module_name, _inst_name) \
159 STRUCT_SECTION_ITERABLE_ALTERNATE(log_dynamic, log_source_dynamic_data, \
160 LOG_INSTANCE_DYNAMIC_DATA(_module_name, _inst_name))
161
162#define Z_LOG_INSTANCE_REGISTER(_module_name, _inst_name, _level) \
163 Z_LOG_CONST_ITEM_REGISTER( \
164 Z_LOG_INSTANCE_FULL_NAME(_module_name, _inst_name), \
165 STRINGIFY(_module_name._inst_name), \
166 _level); \
167 IF_ENABLED(CONFIG_LOG_RUNTIME_FILTERING, \
168 (Z_LOG_RUNTIME_INSTANCE_REGISTER(_module_name, _inst_name)))
169
181#define LOG_INSTANCE_REGISTER(_module_name, _inst_name, _level) \
182 IF_ENABLED(CONFIG_LOG, (Z_LOG_INSTANCE_REGISTER(_module_name, _inst_name, _level)))
183
185
187
188#ifdef __cplusplus
189}
190#endif
191
192#endif /* ZEPHYR_INCLUDE_LOGGING_LOG_INSTANCE_H_ */
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Iterable sections helpers.