优化ULOG_OUTPUT_FLOAT,避免使用内置libc的vsnprintf函数 (#5632)
This commit is contained in:
parent
38ed2a3ec4
commit
86a10716cd
|
@ -137,6 +137,7 @@ config RT_USING_ULOG
|
||||||
config ULOG_OUTPUT_FLOAT
|
config ULOG_OUTPUT_FLOAT
|
||||||
bool "Enable float number support. It will using more thread stack."
|
bool "Enable float number support. It will using more thread stack."
|
||||||
default n
|
default n
|
||||||
|
select PKG_USING_RT_VSNPRINTF_FULL
|
||||||
help
|
help
|
||||||
The default formater is using rt_vsnprint and it not supported float number.
|
The default formater is using rt_vsnprint and it not supported float number.
|
||||||
When enable this option then it will enable libc. The formater will change to vsnprint on libc.
|
When enable this option then it will enable libc. The formater will change to vsnprint on libc.
|
||||||
|
|
|
@ -14,10 +14,6 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "syslog.h"
|
#include "syslog.h"
|
||||||
|
|
||||||
#ifdef ULOG_OUTPUT_FLOAT
|
|
||||||
#include <stdio.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* reference:
|
* reference:
|
||||||
* http://pubs.opengroup.org/onlinepubs/7908799/xsh/syslog.h.html
|
* http://pubs.opengroup.org/onlinepubs/7908799/xsh/syslog.h.html
|
||||||
|
@ -227,12 +223,7 @@ RT_WEAK rt_size_t syslog_formater(char *log_buf, int level, const char *tag, rt_
|
||||||
#endif /* ULOG_OUTPUT_THREAD_NAME */
|
#endif /* ULOG_OUTPUT_THREAD_NAME */
|
||||||
|
|
||||||
log_len += ulog_strcpy(log_len, log_buf + log_len, ": ");
|
log_len += ulog_strcpy(log_len, log_buf + log_len, ": ");
|
||||||
|
|
||||||
#ifdef ULOG_OUTPUT_FLOAT
|
|
||||||
fmt_result = vsnprintf(log_buf + log_len, ULOG_LINE_BUF_SIZE - log_len, format, args);
|
|
||||||
#else
|
|
||||||
fmt_result = rt_vsnprintf(log_buf + log_len, ULOG_LINE_BUF_SIZE - log_len, format, args);
|
fmt_result = rt_vsnprintf(log_buf + log_len, ULOG_LINE_BUF_SIZE - log_len, format, args);
|
||||||
#endif /* ULOG_OUTPUT_FLOAT */
|
|
||||||
|
|
||||||
/* calculate log length */
|
/* calculate log length */
|
||||||
if ((log_len + fmt_result <= ULOG_LINE_BUF_SIZE) && (fmt_result > -1))
|
if ((log_len + fmt_result <= ULOG_LINE_BUF_SIZE) && (fmt_result > -1))
|
||||||
|
|
|
@ -16,10 +16,6 @@
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ULOG_OUTPUT_FLOAT
|
|
||||||
#include <stdio.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ULOG_TIME_USING_TIMESTAMP
|
#ifdef ULOG_TIME_USING_TIMESTAMP
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -367,12 +363,7 @@ RT_WEAK rt_size_t ulog_formater(char *log_buf, rt_uint32_t level, const char *ta
|
||||||
#endif /* ULOG_OUTPUT_THREAD_NAME */
|
#endif /* ULOG_OUTPUT_THREAD_NAME */
|
||||||
|
|
||||||
log_len += ulog_strcpy(log_len, log_buf + log_len, ": ");
|
log_len += ulog_strcpy(log_len, log_buf + log_len, ": ");
|
||||||
|
|
||||||
#ifdef ULOG_OUTPUT_FLOAT
|
|
||||||
fmt_result = vsnprintf(log_buf + log_len, ULOG_LINE_BUF_SIZE - log_len, format, args);
|
|
||||||
#else
|
|
||||||
fmt_result = rt_vsnprintf(log_buf + log_len, ULOG_LINE_BUF_SIZE - log_len, format, args);
|
fmt_result = rt_vsnprintf(log_buf + log_len, ULOG_LINE_BUF_SIZE - log_len, format, args);
|
||||||
#endif /* ULOG_OUTPUT_FLOAT */
|
|
||||||
|
|
||||||
/* calculate log length */
|
/* calculate log length */
|
||||||
if ((log_len + fmt_result <= ULOG_LINE_BUF_SIZE) && (fmt_result > -1))
|
if ((log_len + fmt_result <= ULOG_LINE_BUF_SIZE) && (fmt_result > -1))
|
||||||
|
@ -674,15 +665,10 @@ void ulog_raw(const char *format, ...)
|
||||||
|
|
||||||
/* lock output */
|
/* lock output */
|
||||||
output_lock();
|
output_lock();
|
||||||
|
|
||||||
/* args point to the first variable parameter */
|
/* args point to the first variable parameter */
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
|
|
||||||
#ifdef ULOG_OUTPUT_FLOAT
|
|
||||||
fmt_result = vsnprintf(log_buf, ULOG_LINE_BUF_SIZE, format, args);
|
|
||||||
#else
|
|
||||||
fmt_result = rt_vsnprintf(log_buf, ULOG_LINE_BUF_SIZE, format, args);
|
fmt_result = rt_vsnprintf(log_buf, ULOG_LINE_BUF_SIZE, format, args);
|
||||||
#endif /* ULOG_OUTPUT_FLOAT */
|
|
||||||
|
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
/* calculate log length */
|
/* calculate log length */
|
||||||
|
|
Loading…
Reference in New Issue