Merge pull request #5310 from mysterywolf/printf2
[kservice] 优化RT_PRINTF_LONGLONG,减少重复代码
This commit is contained in:
commit
9c78680f36
222
src/Kconfig
222
src/Kconfig
|
@ -115,37 +115,40 @@ config RT_USING_TIMER_SOFT
|
|||
thread.
|
||||
|
||||
if RT_USING_TIMER_SOFT
|
||||
config RT_TIMER_THREAD_PRIO
|
||||
int "The priority level value of timer thread"
|
||||
default 4
|
||||
|
||||
config RT_TIMER_THREAD_STACK_SIZE
|
||||
int "The stack size of timer thread"
|
||||
default 512
|
||||
config RT_TIMER_THREAD_PRIO
|
||||
int "The priority level value of timer thread"
|
||||
default 4
|
||||
|
||||
config RT_TIMER_THREAD_STACK_SIZE
|
||||
int "The stack size of timer thread"
|
||||
default 512
|
||||
endif
|
||||
|
||||
menu "kservice optimization"
|
||||
|
||||
config RT_KSERVICE_USING_STDLIB
|
||||
bool "Enable kservice to use standard C library"
|
||||
default n
|
||||
config RT_KSERVICE_USING_STDLIB
|
||||
bool "Enable kservice to use standard C library"
|
||||
default n
|
||||
|
||||
config RT_KSERVICE_USING_TINY_SIZE
|
||||
bool "Enable kservice to use tiny size"
|
||||
default n
|
||||
config RT_KSERVICE_USING_TINY_SIZE
|
||||
bool "Enable kservice to use tiny size"
|
||||
default n
|
||||
|
||||
config RT_USING_ASM_MEMCPY
|
||||
bool
|
||||
default n
|
||||
config RT_USING_ASM_MEMCPY
|
||||
bool
|
||||
default n
|
||||
|
||||
config RT_USING_ASM_MEMSET
|
||||
bool
|
||||
default n
|
||||
config RT_USING_ASM_MEMSET
|
||||
bool
|
||||
default n
|
||||
|
||||
config RT_USING_TINY_FFS
|
||||
bool "Enable kservice to use tiny ffs"
|
||||
default n
|
||||
config RT_USING_TINY_FFS
|
||||
bool "Enable kservice to use tiny finding first bit set method"
|
||||
default n
|
||||
|
||||
config RT_PRINTF_LONGLONG
|
||||
bool "Enable rt_printf-family functions to support long long format"
|
||||
default n
|
||||
|
||||
endmenu
|
||||
|
||||
|
@ -155,121 +158,122 @@ menuconfig RT_DEBUG
|
|||
|
||||
if RT_DEBUG
|
||||
|
||||
config RT_DEBUG_COLOR
|
||||
bool "Enable color debugging log"
|
||||
default n
|
||||
config RT_DEBUG_COLOR
|
||||
bool "Enable color debugging log"
|
||||
default n
|
||||
|
||||
config RT_DEBUG_INIT_CONFIG
|
||||
bool "Enable debugging of components initialization"
|
||||
default n
|
||||
config RT_DEBUG_INIT_CONFIG
|
||||
bool "Enable debugging of components initialization"
|
||||
default n
|
||||
|
||||
config RT_DEBUG_INIT
|
||||
int
|
||||
default 1 if RT_DEBUG_INIT_CONFIG
|
||||
config RT_DEBUG_INIT
|
||||
int
|
||||
default 1 if RT_DEBUG_INIT_CONFIG
|
||||
|
||||
config RT_DEBUG_THREAD_CONFIG
|
||||
bool "Enable debugging of Thread State Changes"
|
||||
default n
|
||||
config RT_DEBUG_THREAD_CONFIG
|
||||
bool "Enable debugging of Thread State Changes"
|
||||
default n
|
||||
|
||||
config RT_DEBUG_THREAD
|
||||
int
|
||||
default 1 if RT_DEBUG_THREAD_CONFIG
|
||||
config RT_DEBUG_THREAD
|
||||
int
|
||||
default 1 if RT_DEBUG_THREAD_CONFIG
|
||||
|
||||
config RT_DEBUG_SCHEDULER_CONFIG
|
||||
bool "Enable debugging of Scheduler"
|
||||
default n
|
||||
config RT_DEBUG_SCHEDULER_CONFIG
|
||||
bool "Enable debugging of Scheduler"
|
||||
default n
|
||||
|
||||
config RT_DEBUG_SCHEDULER
|
||||
int
|
||||
default 1 if RT_DEBUG_SCHEDULER_CONFIG
|
||||
config RT_DEBUG_SCHEDULER
|
||||
int
|
||||
default 1 if RT_DEBUG_SCHEDULER_CONFIG
|
||||
|
||||
config RT_DEBUG_IPC_CONFIG
|
||||
bool "Enable debugging of IPC"
|
||||
default n
|
||||
config RT_DEBUG_IPC_CONFIG
|
||||
bool "Enable debugging of IPC"
|
||||
default n
|
||||
|
||||
config RT_DEBUG_IPC
|
||||
int
|
||||
default 1 if RT_DEBUG_IPC_CONFIG
|
||||
config RT_DEBUG_IPC
|
||||
int
|
||||
default 1 if RT_DEBUG_IPC_CONFIG
|
||||
|
||||
config RT_DEBUG_TIMER_CONFIG
|
||||
bool "Enable debugging of Timer"
|
||||
default n
|
||||
config RT_DEBUG_TIMER_CONFIG
|
||||
bool "Enable debugging of Timer"
|
||||
default n
|
||||
|
||||
config RT_DEBUG_TIMER
|
||||
int
|
||||
default 1 if RT_DEBUG_TIMER_CONFIG
|
||||
config RT_DEBUG_TIMER
|
||||
int
|
||||
default 1 if RT_DEBUG_TIMER_CONFIG
|
||||
|
||||
config RT_DEBUG_IRQ_CONFIG
|
||||
bool "Enable debugging of IRQ(Interrupt Request)"
|
||||
default n
|
||||
config RT_DEBUG_IRQ_CONFIG
|
||||
bool "Enable debugging of IRQ(Interrupt Request)"
|
||||
default n
|
||||
|
||||
config RT_DEBUG_IRQ
|
||||
int
|
||||
default 1 if RT_DEBUG_IRQ_CONFIG
|
||||
config RT_DEBUG_IRQ
|
||||
int
|
||||
default 1 if RT_DEBUG_IRQ_CONFIG
|
||||
|
||||
config RT_DEBUG_MEM_CONFIG
|
||||
bool "Enable debugging of Small Memory Algorithm"
|
||||
default n
|
||||
config RT_DEBUG_MEM_CONFIG
|
||||
bool "Enable debugging of Small Memory Algorithm"
|
||||
default n
|
||||
|
||||
config RT_DEBUG_MEM
|
||||
int
|
||||
default 1 if RT_DEBUG_MEM_CONFIG
|
||||
config RT_DEBUG_MEM
|
||||
int
|
||||
default 1 if RT_DEBUG_MEM_CONFIG
|
||||
|
||||
config RT_DEBUG_SLAB_CONFIG
|
||||
bool "Enable debugging of SLAB Memory Algorithm"
|
||||
default n
|
||||
config RT_DEBUG_SLAB_CONFIG
|
||||
bool "Enable debugging of SLAB Memory Algorithm"
|
||||
default n
|
||||
|
||||
config RT_DEBUG_SLAB
|
||||
int
|
||||
default 1 if RT_DEBUG_SLAB_CONFIG
|
||||
config RT_DEBUG_SLAB
|
||||
int
|
||||
default 1 if RT_DEBUG_SLAB_CONFIG
|
||||
|
||||
config RT_DEBUG_MEMHEAP_CONFIG
|
||||
bool "Enable debugging of Memory Heap Algorithm"
|
||||
default n
|
||||
config RT_DEBUG_MEMHEAP_CONFIG
|
||||
bool "Enable debugging of Memory Heap Algorithm"
|
||||
default n
|
||||
|
||||
config RT_DEBUG_MEMHEAP
|
||||
int
|
||||
default 1 if RT_DEBUG_MEMHEAP_CONFIG
|
||||
config RT_DEBUG_MEMHEAP
|
||||
int
|
||||
default 1 if RT_DEBUG_MEMHEAP_CONFIG
|
||||
|
||||
config RT_DEBUG_MODULE_CONFIG
|
||||
bool "Enable debugging of Application Module"
|
||||
default n
|
||||
config RT_DEBUG_MODULE_CONFIG
|
||||
bool "Enable debugging of Application Module"
|
||||
default n
|
||||
|
||||
config RT_DEBUG_MODULE
|
||||
int
|
||||
default 1 if RT_DEBUG_MODULE_CONFIG
|
||||
config RT_DEBUG_MODULE
|
||||
int
|
||||
default 1 if RT_DEBUG_MODULE_CONFIG
|
||||
|
||||
endif
|
||||
|
||||
menu "Inter-Thread communication"
|
||||
|
||||
config RT_USING_SEMAPHORE
|
||||
bool "Enable semaphore"
|
||||
default y
|
||||
config RT_USING_SEMAPHORE
|
||||
bool "Enable semaphore"
|
||||
default y
|
||||
|
||||
config RT_USING_MUTEX
|
||||
bool "Enable mutex"
|
||||
default y
|
||||
config RT_USING_MUTEX
|
||||
bool "Enable mutex"
|
||||
default y
|
||||
|
||||
config RT_USING_EVENT
|
||||
bool "Enable event flag"
|
||||
default y
|
||||
config RT_USING_EVENT
|
||||
bool "Enable event flag"
|
||||
default y
|
||||
|
||||
config RT_USING_MAILBOX
|
||||
bool "Enable mailbox"
|
||||
default y
|
||||
config RT_USING_MAILBOX
|
||||
bool "Enable mailbox"
|
||||
default y
|
||||
|
||||
config RT_USING_MESSAGEQUEUE
|
||||
bool "Enable message queue"
|
||||
default y
|
||||
config RT_USING_MESSAGEQUEUE
|
||||
bool "Enable message queue"
|
||||
default y
|
||||
|
||||
config RT_USING_SIGNALS
|
||||
bool "Enable signals"
|
||||
select RT_USING_MEMPOOL
|
||||
default n
|
||||
help
|
||||
A signal is an asynchronous notification sent to a specific thread
|
||||
in order to notify it of an event that occurred.
|
||||
|
||||
config RT_USING_SIGNALS
|
||||
bool "Enable signals"
|
||||
select RT_USING_MEMPOOL
|
||||
default n
|
||||
help
|
||||
A signal is an asynchronous notification sent to a specific thread
|
||||
in order to notify it of an event that occurred.
|
||||
endmenu
|
||||
|
||||
menu "Memory Management"
|
||||
|
@ -375,10 +379,6 @@ menu "Kernel Device Object"
|
|||
config RT_CONSOLE_DEVICE_NAME
|
||||
string "the device name for console"
|
||||
default "uart"
|
||||
|
||||
config RT_PRINTF_LONGLONG
|
||||
bool "rt_kprintf support long long"
|
||||
default n
|
||||
endif
|
||||
|
||||
endmenu
|
||||
|
|
|
@ -593,7 +593,6 @@ RTM_EXPORT(rt_show_version);
|
|||
/* private function */
|
||||
#define _ISDIGIT(c) ((unsigned)((c) - '0') < 10)
|
||||
|
||||
#ifdef RT_PRINTF_LONGLONG
|
||||
/**
|
||||
* This function will duplicate a string.
|
||||
*
|
||||
|
@ -603,44 +602,38 @@ RTM_EXPORT(rt_show_version);
|
|||
*
|
||||
* @return the duplicated string pointer.
|
||||
*/
|
||||
#ifdef RT_PRINTF_LONGLONG
|
||||
rt_inline int divide(long long *n, int base)
|
||||
{
|
||||
int res;
|
||||
|
||||
/* optimized for processor which does not support divide instructions. */
|
||||
if (base == 10)
|
||||
{
|
||||
res = (int)(((unsigned long long)*n) % 10U);
|
||||
*n = (long long)(((unsigned long long)*n) / 10U);
|
||||
}
|
||||
else
|
||||
{
|
||||
res = (int)(((unsigned long long)*n) % 16U);
|
||||
*n = (long long)(((unsigned long long)*n) / 16U);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
#else
|
||||
rt_inline int divide(long *n, int base)
|
||||
#endif /* RT_PRINTF_LONGLONG */
|
||||
{
|
||||
int res;
|
||||
|
||||
/* optimized for processor which does not support divide instructions. */
|
||||
if (base == 10)
|
||||
{
|
||||
#ifdef RT_PRINTF_LONGLONG
|
||||
res = (int)(((unsigned long long)*n) % 10U);
|
||||
*n = (long long)(((unsigned long long)*n) / 10U);
|
||||
#else
|
||||
res = (int)(((unsigned long)*n) % 10U);
|
||||
*n = (long)(((unsigned long)*n) / 10U);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef RT_PRINTF_LONGLONG
|
||||
res = (int)(((unsigned long long)*n) % 16U);
|
||||
*n = (long long)(((unsigned long long)*n) / 16U);
|
||||
#else
|
||||
res = (int)(((unsigned long)*n) % 16U);
|
||||
*n = (long)(((unsigned long)*n) / 16U);
|
||||
#endif
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
#endif /* RT_PRINTF_LONGLONG */
|
||||
|
||||
rt_inline int skip_atoi(const char **s)
|
||||
{
|
||||
|
@ -659,30 +652,19 @@ rt_inline int skip_atoi(const char **s)
|
|||
#define SPECIAL (1 << 5) /* 0x */
|
||||
#define LARGE (1 << 6) /* use 'ABCDEF' instead of 'abcdef' */
|
||||
|
||||
static char *print_number(char *buf,
|
||||
char *end,
|
||||
#ifdef RT_PRINTF_LONGLONG
|
||||
long long num,
|
||||
#else
|
||||
long num,
|
||||
#endif /* RT_PRINTF_LONGLONG */
|
||||
int base,
|
||||
int s,
|
||||
#ifdef RT_PRINTF_PRECISION
|
||||
static char *print_number(char *buf,
|
||||
char *end,
|
||||
#ifdef RT_PRINTF_LONGLONG
|
||||
long long num,
|
||||
#else
|
||||
long num,
|
||||
#endif /* RT_PRINTF_LONGLONG */
|
||||
int base,
|
||||
int s,
|
||||
int precision,
|
||||
int type)
|
||||
#else
|
||||
static char *print_number(char *buf,
|
||||
char *end,
|
||||
#ifdef RT_PRINTF_LONGLONG
|
||||
long long num,
|
||||
#else
|
||||
long num,
|
||||
#endif /* RT_PRINTF_LONGLONG */
|
||||
int base,
|
||||
int s,
|
||||
int type)
|
||||
#endif /* RT_PRINTF_PRECISION */
|
||||
int type)
|
||||
{
|
||||
char c, sign;
|
||||
#ifdef RT_PRINTF_LONGLONG
|
||||
|
|
Loading…
Reference in New Issue