Zephyr Project API 3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
log_core.h File Reference
#include <zephyr/logging/log_msg.h>
#include <zephyr/logging/log_instance.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdarg.h>
#include <zephyr/sys/util.h>

Go to the source code of this file.

Macros

#define LOG_LEVEL_NONE   0U
 
#define LOG_LEVEL_ERR   1U
 
#define LOG_LEVEL_WRN   2U
 
#define LOG_LEVEL_INF   3U
 
#define LOG_LEVEL_DBG   4U
 
#define CONFIG_LOG_DEFAULT_LEVEL   0U
 
#define CONFIG_LOG_MAX_LEVEL   0U
 
#define LOG_FUNCTION_PREFIX_MASK
 
#define LOG_CURRENT_MODULE_ID()
 Macro for getting ID of current module.
 
#define LOG_POINTERS_VALIDATE(string_ok, ...)   string_ok = true
 
#define LOG_STRING_WARNING(_mode, _src, ...)
 
#define LOG_LEVEL_BITS   3U
 Number of bits used to encode log level.
 
#define LOG_FILTER_SLOT_SIZE   LOG_LEVEL_BITS
 Filter slot size.
 
#define LOG_FILTERS_NUM_OF_SLOTS   (32 / LOG_FILTER_SLOT_SIZE)
 Number of slots in one word.
 
#define LOG_FILTERS_MAX_BACKENDS    (LOG_FILTERS_NUM_OF_SLOTS - (1 + IS_ENABLED(CONFIG_LOG_FRONTEND)))
 Maximum number of backends supported when runtime filtering is enabled.
 
#define LOG_FRONTEND_SLOT_ID   (LOG_FILTERS_NUM_OF_SLOTS - 1)
 Slot reserved for the frontend.
 
#define LOG_FILTER_SLOT_MASK   (BIT(LOG_FILTER_SLOT_SIZE) - 1U)
 Slot mask.
 
#define LOG_FILTER_SLOT_SHIFT(_id)   (LOG_FILTER_SLOT_SIZE * (_id))
 Bit offset of a slot.
 
#define LOG_FILTER_SLOT_GET(_filters, _id)    ((*(_filters) >> LOG_FILTER_SLOT_SHIFT(_id)) & LOG_FILTER_SLOT_MASK)
 
#define LOG_FILTER_SLOT_SET(_filters, _id, _filter)
 
#define LOG_FILTER_AGGR_SLOT_IDX   0
 
#define LOG_FILTER_AGGR_SLOT_GET(_filters)    LOG_FILTER_SLOT_GET(_filters, LOG_FILTER_AGGR_SLOT_IDX)
 
#define LOG_FILTER_FIRST_BACKEND_SLOT_IDX   1
 
#define LOG_LEVEL_INTERNAL_RAW_STRING   LOG_LEVEL_NONE
 Log level value used to indicate log entry that should not be formatted (raw string).
 
#define LOG_ITEM_DYNAMIC_DATA(_name)   UTIL_CAT(log_dynamic_, _name)
 Creates name of variable and section for runtime log data.
 
#define LOG_INSTANCE_DYNAMIC_DATA(_module_name, _inst)    LOG_ITEM_DYNAMIC_DATA(Z_LOG_INSTANCE_FULL_NAME(_module_name, _inst))
 

Functions

 TYPE_SECTION_START_EXTERN (struct log_source_const_data, log_const)
 
 TYPE_SECTION_END_EXTERN (struct log_source_const_data, log_const)
 
static uint32_t log_const_source_id (const struct log_source_const_data *data)
 Get index of the log source based on the address of the constant data associated with the source.
 
 TYPE_SECTION_START_EXTERN (struct log_source_dynamic_data, log_dynamic)
 
 TYPE_SECTION_END_EXTERN (struct log_source_dynamic_data, log_dynamic)
 
static uint32_t log_dynamic_source_id (struct log_source_dynamic_data *data)
 Get index of the log source based on the address of the dynamic data associated with the source.
 
static void log_generic (uint8_t level, const char *fmt, va_list ap)
 Write a generic log message.
 

Macro Definition Documentation

◆ CONFIG_LOG_DEFAULT_LEVEL

#define CONFIG_LOG_DEFAULT_LEVEL   0U

◆ CONFIG_LOG_MAX_LEVEL

#define CONFIG_LOG_MAX_LEVEL   0U

◆ LOG_CURRENT_MODULE_ID

#define LOG_CURRENT_MODULE_ID ( )
Value:
(__log_level != 0 ? \
log_const_source_id(__log_current_const_data) : 0U)

Macro for getting ID of current module.

◆ LOG_FILTER_AGGR_SLOT_GET

#define LOG_FILTER_AGGR_SLOT_GET (   _filters)     LOG_FILTER_SLOT_GET(_filters, LOG_FILTER_AGGR_SLOT_IDX)

◆ LOG_FILTER_AGGR_SLOT_IDX

#define LOG_FILTER_AGGR_SLOT_IDX   0

◆ LOG_FILTER_FIRST_BACKEND_SLOT_IDX

#define LOG_FILTER_FIRST_BACKEND_SLOT_IDX   1

◆ LOG_FILTER_SLOT_GET

#define LOG_FILTER_SLOT_GET (   _filters,
  _id 
)     ((*(_filters) >> LOG_FILTER_SLOT_SHIFT(_id)) & LOG_FILTER_SLOT_MASK)

◆ LOG_FILTER_SLOT_MASK

#define LOG_FILTER_SLOT_MASK   (BIT(LOG_FILTER_SLOT_SIZE) - 1U)

Slot mask.

◆ LOG_FILTER_SLOT_SET

#define LOG_FILTER_SLOT_SET (   _filters,
  _id,
  _filter 
)
Value:
do { \
*(_filters) &= ~(LOG_FILTER_SLOT_MASK << \
*(_filters) |= ((_filter) & LOG_FILTER_SLOT_MASK) << \
} while (false)
#define LOG_FILTER_SLOT_SHIFT(_id)
Bit offset of a slot.
Definition log_core.h:395
#define LOG_FILTER_SLOT_MASK
Slot mask.
Definition log_core.h:389

◆ LOG_FILTER_SLOT_SHIFT

#define LOG_FILTER_SLOT_SHIFT (   _id)    (LOG_FILTER_SLOT_SIZE * (_id))

Bit offset of a slot.

Parameters
_idSlot ID.

◆ LOG_FILTER_SLOT_SIZE

#define LOG_FILTER_SLOT_SIZE   LOG_LEVEL_BITS

Filter slot size.

◆ LOG_FILTERS_MAX_BACKENDS

#define LOG_FILTERS_MAX_BACKENDS    (LOG_FILTERS_NUM_OF_SLOTS - (1 + IS_ENABLED(CONFIG_LOG_FRONTEND)))

Maximum number of backends supported when runtime filtering is enabled.

◆ LOG_FILTERS_NUM_OF_SLOTS

#define LOG_FILTERS_NUM_OF_SLOTS   (32 / LOG_FILTER_SLOT_SIZE)

Number of slots in one word.

◆ LOG_FRONTEND_SLOT_ID

#define LOG_FRONTEND_SLOT_ID   (LOG_FILTERS_NUM_OF_SLOTS - 1)

Slot reserved for the frontend.

Last slot is used.

◆ LOG_FUNCTION_PREFIX_MASK

#define LOG_FUNCTION_PREFIX_MASK
Value:
(((uint32_t)IS_ENABLED(CONFIG_LOG_FUNC_NAME_PREFIX_ERR) << \
((uint32_t)IS_ENABLED(CONFIG_LOG_FUNC_NAME_PREFIX_WRN) << \
((uint32_t)IS_ENABLED(CONFIG_LOG_FUNC_NAME_PREFIX_INF) << \
((uint32_t)IS_ENABLED(CONFIG_LOG_FUNC_NAME_PREFIX_DBG) << LOG_LEVEL_DBG))
#define IS_ENABLED(config_macro)
Check for macro definition in compiler-visible expressions.
Definition util_macro.h:124
#define LOG_LEVEL_INF
Definition log_core.h:22
#define LOG_LEVEL_WRN
Definition log_core.h:21
#define LOG_LEVEL_ERR
Definition log_core.h:20
#define LOG_LEVEL_DBG
Definition log_core.h:23
__UINT32_TYPE__ uint32_t
Definition stdint.h:90

◆ LOG_INSTANCE_DYNAMIC_DATA

#define LOG_INSTANCE_DYNAMIC_DATA (   _module_name,
  _inst 
)     LOG_ITEM_DYNAMIC_DATA(Z_LOG_INSTANCE_FULL_NAME(_module_name, _inst))

◆ LOG_ITEM_DYNAMIC_DATA

#define LOG_ITEM_DYNAMIC_DATA (   _name)    UTIL_CAT(log_dynamic_, _name)

Creates name of variable and section for runtime log data.

Parameters
_nameName.

◆ LOG_LEVEL_BITS

#define LOG_LEVEL_BITS   3U

Number of bits used to encode log level.

◆ LOG_LEVEL_DBG

#define LOG_LEVEL_DBG   4U

◆ LOG_LEVEL_ERR

#define LOG_LEVEL_ERR   1U

◆ LOG_LEVEL_INF

#define LOG_LEVEL_INF   3U

◆ LOG_LEVEL_INTERNAL_RAW_STRING

#define LOG_LEVEL_INTERNAL_RAW_STRING   LOG_LEVEL_NONE

Log level value used to indicate log entry that should not be formatted (raw string).

◆ LOG_LEVEL_NONE

#define LOG_LEVEL_NONE   0U

◆ LOG_LEVEL_WRN

#define LOG_LEVEL_WRN   2U

◆ LOG_POINTERS_VALIDATE

#define LOG_POINTERS_VALIDATE (   string_ok,
  ... 
)    string_ok = true

◆ LOG_STRING_WARNING

#define LOG_STRING_WARNING (   _mode,
  _src,
  ... 
)

Function Documentation

◆ log_const_source_id()

static uint32_t log_const_source_id ( const struct log_source_const_data data)
inlinestatic

Get index of the log source based on the address of the constant data associated with the source.

Parameters
dataAddress of the constant data.
Returns
Source ID.

◆ log_dynamic_source_id()

static uint32_t log_dynamic_source_id ( struct log_source_dynamic_data data)
inlinestatic

Get index of the log source based on the address of the dynamic data associated with the source.

Parameters
dataAddress of the dynamic data.
Returns
Source ID.

◆ log_generic()

static void log_generic ( uint8_t  level,
const char *  fmt,
va_list  ap 
)
inlinestatic

Write a generic log message.

Note
This function is intended to be used when porting other log systems.
Parameters
levelLog level..
fmtString to format.
apPointer to arguments list.

◆ TYPE_SECTION_END_EXTERN() [1/2]

TYPE_SECTION_END_EXTERN ( struct log_source_const_data  ,
log_const   
)

◆ TYPE_SECTION_END_EXTERN() [2/2]

TYPE_SECTION_END_EXTERN ( struct log_source_dynamic_data  ,
log_dynamic   
)

◆ TYPE_SECTION_START_EXTERN() [1/2]

TYPE_SECTION_START_EXTERN ( struct log_source_const_data  ,
log_const   
)

◆ TYPE_SECTION_START_EXTERN() [2/2]

TYPE_SECTION_START_EXTERN ( struct log_source_dynamic_data  ,
log_dynamic   
)