Zephyr API Documentation 4.1.99
A Scalable Open Source RTOS
 4.1.99
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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#ifndef ZEPHYR_INCLUDE_LOGGING_LOG_INSTANCE_H_
7#define ZEPHYR_INCLUDE_LOGGING_LOG_INSTANCE_H_
8
9#include <zephyr/types.h>
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
18 const char *name;
20};
21
25#if defined(CONFIG_64BIT)
26 /* Workaround: Ensure that structure size is a multiple of 8 bytes. */
27 uint32_t dummy_64;
28#endif
29};
30
37#define Z_LOG_ITEM_CONST_DATA(_name) UTIL_CAT(log_const_, _name)
38
50#define Z_LOG_CONST_ITEM_REGISTER(_name, _str_name, _level) \
51 const STRUCT_SECTION_ITERABLE_ALTERNATE(log_const, \
52 log_source_const_data, \
53 Z_LOG_ITEM_CONST_DATA(_name)) = \
54 { \
55 .name = _str_name, \
56 .level = (_level), \
57 }
58
67#define LOG_OBJECT_PTR_INIT(_name, _object) \
68 IF_ENABLED(CONFIG_LOG, (._name = _object,))
69
74#define Z_LOG_INSTANCE_FULL_NAME(_module_name, _inst_name) \
75 UTIL_CAT(_module_name, UTIL_CAT(_, _inst_name))
76
86#define Z_LOG_OBJECT_PTR(_name) \
87 COND_CODE_1(CONFIG_LOG_RUNTIME_FILTERING, \
88 (&LOG_ITEM_DYNAMIC_DATA(_name)), \
89 (&Z_LOG_ITEM_CONST_DATA(_name))) \
90
100#define LOG_INSTANCE_PTR(_module_name, _inst_name) \
101 Z_LOG_OBJECT_PTR(Z_LOG_INSTANCE_FULL_NAME(_module_name, _inst_name))
102
115#define LOG_INSTANCE_PTR_INIT(_name, _module_name, _inst_name) \
116 LOG_OBJECT_PTR_INIT(_name, LOG_INSTANCE_PTR(_module_name, _inst_name))
117
118#define Z_LOG_INSTANCE_STRUCT \
119 COND_CODE_1(CONFIG_LOG_RUNTIME_FILTERING, \
120 (struct log_source_dynamic_data), \
121 (const struct log_source_const_data))
122
133#define LOG_INSTANCE_PTR_DECLARE(_name) \
134 COND_CODE_1(CONFIG_LOG, (Z_LOG_INSTANCE_STRUCT * _name), \
135 (int _name[TOOLCHAIN_HAS_ZLA ? 0 : 1]))
136
137#define Z_LOG_RUNTIME_INSTANCE_REGISTER(_module_name, _inst_name) \
138 STRUCT_SECTION_ITERABLE_ALTERNATE(log_dynamic, log_source_dynamic_data, \
139 LOG_INSTANCE_DYNAMIC_DATA(_module_name, _inst_name))
140
141#define Z_LOG_INSTANCE_REGISTER(_module_name, _inst_name, _level) \
142 Z_LOG_CONST_ITEM_REGISTER( \
143 Z_LOG_INSTANCE_FULL_NAME(_module_name, _inst_name), \
144 STRINGIFY(_module_name._inst_name), \
145 _level); \
146 IF_ENABLED(CONFIG_LOG_RUNTIME_FILTERING, \
147 (Z_LOG_RUNTIME_INSTANCE_REGISTER(_module_name, _inst_name)))
148
160#define LOG_INSTANCE_REGISTER(_module_name, _inst_name, _level) \
161 IF_ENABLED(CONFIG_LOG, (Z_LOG_INSTANCE_REGISTER(_module_name, _inst_name, _level)))
162
163#ifdef __cplusplus
164}
165#endif
166
167#endif /* ZEPHYR_INCLUDE_LOGGING_LOG_INSTANCE_H_ */
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Constant data associated with the source of log messages.
Definition log_instance.h:17
uint8_t level
Definition log_instance.h:19
const char * name
Definition log_instance.h:18
Dynamic data associated with the source of log messages.
Definition log_instance.h:23
uint32_t filters
Definition log_instance.h:24