summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGrissiom <[email protected]>2013-09-23 11:27:48 +0800
committerGrissiom <[email protected]>2013-09-23 11:34:13 +0800
commit7b0a3afdf90e85cabe3e39f49a5c2aa22e3e3e8d (patch)
treec7dc06957c83bfa1af1a3e152702aeb4797900a4 /src
parent1cb4ee74fbc3243c7f938be348668bedf7e779cf (diff)
kservice: export vsnprintf as rt_vsnprintf
vsnprintf is a common string function that could be used in many places. Using both vsnprintf in libc and vsnprintf in the RTT could make a bigger image. Moreover, if newlib is not enabled when compiling with GCC, referencing vsnprintf will lead to link error: .../arm-none-eabi/lib/armv7-ar/thumb/softfp/libc.a(lib_a-sbrkr.o): In function `_sbrk_r': sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk' collect2: error: ld returned 1 exit status Using rt_vsnprintf could avoid such problem.
Diffstat (limited to 'src')
-rw-r--r--src/kservice.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/kservice.c b/src/kservice.c
index ff5ff9de2a..c2fa43ba73 100644
--- a/src/kservice.c
+++ b/src/kservice.c
@@ -718,10 +718,10 @@ static char *print_number(char *buf,
return buf;
}
-static rt_int32_t vsnprintf(char *buf,
- rt_size_t size,
- const char *fmt,
- va_list args)
+rt_int32_t rt_vsnprintf(char *buf,
+ rt_size_t size,
+ const char *fmt,
+ va_list args)
{
#ifdef RT_PRINTF_LONGLONG
unsigned long long num;
@@ -976,6 +976,7 @@ static rt_int32_t vsnprintf(char *buf,
*/
return str - buf;
}
+RTM_EXPORT(rt_vsnprintf);
/**
* This function will fill a formatted string to buffer
@@ -990,7 +991,7 @@ rt_int32_t rt_snprintf(char *buf, rt_size_t size, const char *fmt, ...)
va_list args;
va_start(args, fmt);
- n = vsnprintf(buf, size, fmt, args);
+ n = rt_vsnprintf(buf, size, fmt, args);
va_end(args);
return n;
@@ -1006,7 +1007,7 @@ RTM_EXPORT(rt_snprintf);
*/
rt_int32_t rt_vsprintf(char *buf, const char *format, va_list arg_ptr)
{
- return vsnprintf(buf, (rt_size_t) -1, format, arg_ptr);
+ return rt_vsnprintf(buf, (rt_size_t) -1, format, arg_ptr);
}
RTM_EXPORT(rt_vsprintf);
@@ -1114,7 +1115,7 @@ void rt_kprintf(const char *fmt, ...)
* large excluding the terminating null byte. If the output string
* would be larger than the rt_log_buf, we have to adjust the output
* length. */
- length = vsnprintf(rt_log_buf, sizeof(rt_log_buf) - 1, fmt, args);
+ length = rt_vsnprintf(rt_log_buf, sizeof(rt_log_buf) - 1, fmt, args);
if (length > RT_CONSOLEBUF_SIZE - 1)
length = RT_CONSOLEBUF_SIZE - 1;
#ifdef RT_USING_DEVICE