Skip to content

Commit

Permalink
logging: Use TYPE_SECTION macros for log dynamic
Browse files Browse the repository at this point in the history
Clean up log_dynamic to utilize macros for handling sections.

Signed-off-by: Kumar Gala <[email protected]>
  • Loading branch information
galak authored and carlescufi committed May 3, 2023
1 parent bae0a5b commit b07be57
Show file tree
Hide file tree
Showing 7 changed files with 12 additions and 25 deletions.
3 changes: 1 addition & 2 deletions cmake/linker_script/common/common-ram.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ if(CONFIG_PM_DEVICE)
zephyr_iterable_section(NAME pm_device_slots GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT} SUBALIGN 4)
endif()

zephyr_linker_section(NAME log_dynamic GROUP DATA_REGION NOINPUT)
zephyr_linker_section_configure(SECTION log_dynamic KEEP INPUT ".log_dynamic_*")
zephyr_iterable_section(NAME log_dynamic GROUP DATA_REGION ${XIP_ALIGN_WITH_INPUT} SUBALIGN 4)

if(CONFIG_USERSPACE)
# All kernel objects within are assumed to be either completely
Expand Down
8 changes: 1 addition & 7 deletions include/zephyr/linker/common-ram.ld
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,7 @@

ITERABLE_SECTION_RAM_GC_ALLOWED(log_mpsc_pbuf, 4)
ITERABLE_SECTION_RAM(log_msg_ptr, 4)

SECTION_DATA_PROLOGUE(log_dynamic_sections,,)
{
__log_dynamic_start = .;
KEEP(*(SORT(.log_dynamic_*)));
__log_dynamic_end = .;
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
ITERABLE_SECTION_RAM(log_dynamic, 4)

#ifdef CONFIG_USERSPACE
/* All kernel objects within are assumed to be either completely
Expand Down
9 changes: 3 additions & 6 deletions include/zephyr/logging/log.h
Original file line number Diff line number Diff line change
Expand Up @@ -306,12 +306,9 @@ void z_log_vprintk(const char *fmt, va_list ap);
.level = _level \
}

#define _LOG_MODULE_DYNAMIC_DATA_CREATE(_name) \
struct log_source_dynamic_data LOG_ITEM_DYNAMIC_DATA(_name) \
__attribute__ ((section("." STRINGIFY( \
LOG_ITEM_DYNAMIC_DATA(_name)))) \
) \
__attribute__((used))
#define _LOG_MODULE_DYNAMIC_DATA_CREATE(_name) \
STRUCT_SECTION_ITERABLE_ALTERNATE(log_dynamic, log_source_dynamic_data, \
LOG_ITEM_DYNAMIC_DATA(_name))

#define _LOG_MODULE_DYNAMIC_DATA_COND_CREATE(_name) \
IF_ENABLED(CONFIG_LOG_RUNTIME_FILTERING, \
Expand Down
6 changes: 3 additions & 3 deletions include/zephyr/logging/log_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -433,8 +433,8 @@ static inline uint32_t log_const_source_id(
sizeof(struct log_source_const_data);
}

extern struct log_source_dynamic_data __log_dynamic_start[];
extern struct log_source_dynamic_data __log_dynamic_end[];
TYPE_SECTION_START_EXTERN(struct log_source_dynamic_data, log_dynamic);
TYPE_SECTION_END_EXTERN(struct log_source_dynamic_data, log_dynamic);

/** @brief Creates name of variable and section for runtime log data.
*
Expand All @@ -454,7 +454,7 @@ extern struct log_source_dynamic_data __log_dynamic_end[];
*/
static inline uint32_t log_dynamic_source_id(struct log_source_dynamic_data *data)
{
return ((uint8_t *)data - (uint8_t *)__log_dynamic_start)/
return ((uint8_t *)data - (uint8_t *)TYPE_SECTION_START(log_dynamic))/
sizeof(struct log_source_dynamic_data);
}

Expand Down
7 changes: 2 additions & 5 deletions include/zephyr/logging/log_instance.h
Original file line number Diff line number Diff line change
Expand Up @@ -143,11 +143,8 @@ struct log_source_dynamic_data {
IF_ENABLED(CONFIG_LOG, (Z_LOG_INSTANCE_STRUCT * _name))

#define Z_LOG_RUNTIME_INSTANCE_REGISTER(_module_name, _inst_name) \
struct log_source_dynamic_data LOG_INSTANCE_DYNAMIC_DATA(_module_name, _inst_name) \
__attribute__ ((section("." STRINGIFY( \
LOG_INSTANCE_DYNAMIC_DATA(_module_name, _inst_name) \
) \
))) __attribute__((used))
STRUCT_SECTION_ITERABLE_ALTERNATE(log_dynamic, log_source_dynamic_data, \
LOG_INSTANCE_DYNAMIC_DATA(_module_name, _inst_name))

#define Z_LOG_INSTANCE_REGISTER(_module_name, _inst_name, _level) \
Z_LOG_CONST_ITEM_REGISTER( \
Expand Down
2 changes: 1 addition & 1 deletion include/zephyr/logging/log_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ void z_log_notify_backend_enabled(void);
*/
static inline uint32_t *z_log_dynamic_filters_get(uint32_t source_id)
{
return &__log_dynamic_start[source_id].filters;
return &TYPE_SECTION_START(log_dynamic)[source_id].filters;
}

/** @brief Get number of registered sources. */
Expand Down
2 changes: 1 addition & 1 deletion subsys/logging/log_mgmt.c
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ int z_log_link_set_runtime_level(uint8_t domain_id, uint16_t source_id, uint8_t
static uint32_t *get_dynamic_filter(uint8_t domain_id, uint32_t source_id)
{
if (z_log_is_local_domain(domain_id)) {
return &__log_dynamic_start[source_id].filters;
return &TYPE_SECTION_START(log_dynamic)[source_id].filters;
}

return z_log_link_get_dynamic_filter(domain_id, source_id);
Expand Down

0 comments on commit b07be57

Please sign in to comment.