7#ifndef ZEPHYR_INCLUDE_LOGGING_LOG_H_ 
    8#define ZEPHYR_INCLUDE_LOGGING_LOG_H_ 
   40#define LOG_ERR(...)    Z_LOG(LOG_LEVEL_ERR, __VA_ARGS__) 
   51#define LOG_WRN(...)   Z_LOG(LOG_LEVEL_WRN, __VA_ARGS__) 
   61#define LOG_INF(...)   Z_LOG(LOG_LEVEL_INF, __VA_ARGS__) 
   71#define LOG_DBG(...)    Z_LOG(LOG_LEVEL_DBG, __VA_ARGS__) 
   82#define LOG_PRINTK(...) Z_LOG_PRINTK(0, __VA_ARGS__) 
   92#define LOG_RAW(...) Z_LOG_PRINTK(1, __VA_ARGS__) 
  106#define LOG_INST_ERR(_log_inst, ...) \ 
  107        Z_LOG_INSTANCE(LOG_LEVEL_ERR, _log_inst, __VA_ARGS__) 
  122#define LOG_INST_WRN(_log_inst, ...) \ 
  123        Z_LOG_INSTANCE(LOG_LEVEL_WRN, _log_inst, __VA_ARGS__) 
  137#define LOG_INST_INF(_log_inst, ...) \ 
  138        Z_LOG_INSTANCE(LOG_LEVEL_INF, _log_inst, __VA_ARGS__) 
  152#define LOG_INST_DBG(_log_inst, ...) \ 
  153        Z_LOG_INSTANCE(LOG_LEVEL_DBG, _log_inst, __VA_ARGS__) 
  165#define LOG_HEXDUMP_ERR(_data, _length, _str) \ 
  166        Z_LOG_HEXDUMP(LOG_LEVEL_ERR, _data, _length, _str) 
  178#define LOG_HEXDUMP_WRN(_data, _length, _str) \ 
  179        Z_LOG_HEXDUMP(LOG_LEVEL_WRN, _data, _length, _str) 
  190#define LOG_HEXDUMP_INF(_data, _length, _str) \ 
  191        Z_LOG_HEXDUMP(LOG_LEVEL_INF, _data, _length, _str) 
  202#define LOG_HEXDUMP_DBG(_data, _length, _str) \ 
  203        Z_LOG_HEXDUMP(LOG_LEVEL_DBG, _data, _length, _str) 
  219#define LOG_INST_HEXDUMP_ERR(_log_inst, _data, _length, _str) \ 
  220        Z_LOG_HEXDUMP_INSTANCE(LOG_LEVEL_ERR, _log_inst, _data, _length, _str) 
  234#define LOG_INST_HEXDUMP_WRN(_log_inst, _data, _length, _str) \ 
  235        Z_LOG_HEXDUMP_INSTANCE(LOG_LEVEL_WRN, _log_inst, _data, _length, _str) 
  248#define LOG_INST_HEXDUMP_INF(_log_inst, _data, _length, _str) \ 
  249        Z_LOG_HEXDUMP_INSTANCE(LOG_LEVEL_INF, _log_inst, _data, _length, _str) 
  262#define LOG_INST_HEXDUMP_DBG(_log_inst, _data, _length, _str)   \ 
  263        Z_LOG_HEXDUMP_INSTANCE(LOG_LEVEL_DBG, _log_inst, _data, _length, _str) 
  277void z_log_vprintk(
const char *fmt, va_list ap);
 
  281#define LOG_IN_CPLUSPLUS 1 
  287#if !defined(CONFIG_LOG) 
  288#define _LOG_LEVEL_RESOLVE(...) LOG_LEVEL_NONE 
  290#define _LOG_LEVEL_RESOLVE(...) \ 
  291        Z_LOG_EVAL(LOG_LEVEL, \ 
  292                  (GET_ARG_N(2, __VA_ARGS__, LOG_LEVEL)), \ 
  293                  (GET_ARG_N(2, __VA_ARGS__, CONFIG_LOG_DEFAULT_LEVEL))) 
  297#define _LOG_ARG1(arg1, ...) arg1 
  299#define _LOG_MODULE_CONST_DATA_CREATE(_name, _level)                           \ 
  300        IF_ENABLED(LOG_IN_CPLUSPLUS, (extern))                                 \ 
  301        const struct log_source_const_data Z_LOG_ITEM_CONST_DATA(_name)        \ 
  302        __attribute__ ((section("." STRINGIFY(Z_LOG_ITEM_CONST_DATA(_name))))) \
 
  303        __attribute__((used)) = {                                              \
 
  304                .name = STRINGIFY(_name),                                      \
 
  308#define _LOG_MODULE_DYNAMIC_DATA_CREATE(_name)                          \ 
  309        struct log_source_dynamic_data LOG_ITEM_DYNAMIC_DATA(_name)     \ 
  310        __attribute__ ((section("." STRINGIFY(                          \
 
  311                                     LOG_ITEM_DYNAMIC_DATA(_name))))    \
 
  313        __attribute__((used))
 
  315#define _LOG_MODULE_DYNAMIC_DATA_COND_CREATE(_name)             \ 
  316        IF_ENABLED(CONFIG_LOG_RUNTIME_FILTERING,                \ 
  317                  (_LOG_MODULE_DYNAMIC_DATA_CREATE(_name);)) 
  319#define _LOG_MODULE_DATA_CREATE(_name, _level)                  \ 
  320        _LOG_MODULE_CONST_DATA_CREATE(_name, _level);           \ 
  321        _LOG_MODULE_DYNAMIC_DATA_COND_CREATE(_name) 
  326#define Z_DO_LOG_MODULE_REGISTER(...) \ 
  327        Z_LOG_EVAL(CONFIG_LOG_OVERRIDE_LEVEL, \ 
  329                   (Z_LOG_EVAL(_LOG_LEVEL_RESOLVE(__VA_ARGS__), (1), (0))) \ 
  363#define LOG_MODULE_REGISTER(...)                                        \ 
  365                Z_DO_LOG_MODULE_REGISTER(__VA_ARGS__),                  \ 
  366                (_LOG_MODULE_DATA_CREATE(GET_ARG_N(1, __VA_ARGS__),     \ 
  367                                      _LOG_LEVEL_RESOLVE(__VA_ARGS__))),\ 
  370        LOG_MODULE_DECLARE(__VA_ARGS__) 
  398#define LOG_MODULE_DECLARE(...)                                               \ 
  399        extern const struct log_source_const_data                             \ 
  400                        Z_LOG_ITEM_CONST_DATA(GET_ARG_N(1, __VA_ARGS__));     \ 
  401        extern struct log_source_dynamic_data                                 \ 
  402                        LOG_ITEM_DYNAMIC_DATA(GET_ARG_N(1, __VA_ARGS__));     \ 
  404        static const struct log_source_const_data *                           \ 
  405                __log_current_const_data __unused =                           \ 
  406                        Z_DO_LOG_MODULE_REGISTER(__VA_ARGS__) ?               \ 
  407                        &Z_LOG_ITEM_CONST_DATA(GET_ARG_N(1, __VA_ARGS__)) :   \ 
  410        static struct log_source_dynamic_data *                               \ 
  411                __log_current_dynamic_data __unused =                         \ 
  412                        (Z_DO_LOG_MODULE_REGISTER(__VA_ARGS__) &&             \ 
  413                        IS_ENABLED(CONFIG_LOG_RUNTIME_FILTERING)) ?           \ 
  414                        &LOG_ITEM_DYNAMIC_DATA(GET_ARG_N(1, __VA_ARGS__)) :   \ 
  417        static const uint32_t __log_level __unused =                          \ 
  418                                        _LOG_LEVEL_RESOLVE(__VA_ARGS__) 
  427#define LOG_LEVEL_SET(level) static const uint32_t __log_level __unused = \ 
  428                                Z_LOG_RESOLVED_LEVEL(level, 0) 
  430#ifdef CONFIG_LOG_CUSTOM_HEADER 
  432#include <zephyr_custom_log.h> 
  439#if defined(__CDT_PARSER__) || defined(__JETBRAINS_IDE__) 
  445#undef LOG_HEXDUMP_ERR 
  446#undef LOG_HEXDUMP_WRN 
  447#undef LOG_HEXDUMP_INF 
  448#undef LOG_HEXDUMP_DBG 
  450#define LOG_ERR(...) (void) 0 
  451#define LOG_WRN(...) (void) 0 
  452#define LOG_DBG(...) (void) 0 
  453#define LOG_INF(...) (void) 0 
  455#define LOG_HEXDUMP_ERR(...) (void) 0 
  456#define LOG_HEXDUMP_WRN(...) (void) 0 
  457#define LOG_HEXDUMP_DBG(...) (void) 0 
  458#define LOG_HEXDUMP_INF(...) (void) 0