logging: add syst format output

Add syst format output support for existing logging system.

Fixes: #19841.

Signed-off-by: Wentong Wu <wentong.wu@intel.com>
This commit is contained in:
Wentong Wu 2019-10-29 05:45:55 +08:00 committed by Andrew Boie
commit dd9480913e
7 changed files with 275 additions and 0 deletions

View file

@ -49,6 +49,14 @@ typedef int (*out_func_t)(int c, void *ctx);
extern int z_prf(int (*func)(), void *dest, char *format, va_list vargs);
extern void z_vprintk(out_func_t out, void *log_output,
const char *fmt, va_list ap);
extern void log_output_msg_syst_process(const struct log_output *log_output,
struct log_msg *msg, u32_t flag);
extern void log_output_string_syst_process(const struct log_output *log_output,
struct log_msg_ids src_level,
const char *fmt, va_list ap, u32_t flag);
extern void log_output_hexdump_syst_process(const struct log_output *log_output,
struct log_msg_ids src_level,
const u8_t *data, u32_t length, u32_t flag);
/* The RFC 5424 allows very flexible mapping and suggest the value 0 being the
* highest severity and 7 to be the lowest (debugging level) severity.
@ -514,6 +522,12 @@ void log_output_msg_process(const struct log_output *log_output,
bool raw_string = (level == LOG_LEVEL_INTERNAL_RAW_STRING);
int prefix_offset;
if (IS_ENABLED(CONFIG_LOG_MIPI_SYST_ENABLE) &&
flags & LOG_OUTPUT_FLAG_FORMAT_SYST) {
log_output_msg_syst_process(log_output, msg, flags);
return;
}
prefix_offset = raw_string ?
0 : prefix_print(log_output, flags, std_msg, timestamp,
level, domain_id, source_id);
@ -555,6 +569,13 @@ void log_output_string(const struct log_output *log_output,
u16_t source_id = (u16_t)src_level.source_id;
bool raw_string = (level == LOG_LEVEL_INTERNAL_RAW_STRING);
if (IS_ENABLED(CONFIG_LOG_MIPI_SYST_ENABLE) &&
flags & LOG_OUTPUT_FLAG_FORMAT_SYST) {
log_output_string_syst_process(log_output,
src_level, fmt, ap, flags);
return;
}
if (!raw_string) {
prefix_print(log_output, flags, true, timestamp,
level, domain_id, source_id);
@ -591,6 +612,13 @@ void log_output_hexdump(const struct log_output *log_output,
u8_t domain_id = (u8_t)src_level.domain_id;
u16_t source_id = (u16_t)src_level.source_id;
if (IS_ENABLED(CONFIG_LOG_MIPI_SYST_ENABLE) &&
flags & LOG_OUTPUT_FLAG_FORMAT_SYST) {
log_output_hexdump_syst_process(log_output,
src_level, data, length, flags);
return;
}
prefix_offset = prefix_print(log_output, flags, true, timestamp,
level, domain_id, source_id);