(uart): kprintf_internals improvements
This commit is contained in:
parent
225e44bbdc
commit
b5788b01cd
1 changed files with 13 additions and 1 deletions
|
|
@ -137,6 +137,7 @@ void kprintf_internal(const char *format, va_list args)
|
||||||
if (*p == '%')
|
if (*p == '%')
|
||||||
{
|
{
|
||||||
p++;
|
p++;
|
||||||
|
if(*p == '\0') break;
|
||||||
switch (*p)
|
switch (*p)
|
||||||
{
|
{
|
||||||
case 'c':
|
case 'c':
|
||||||
|
|
@ -148,6 +149,7 @@ void kprintf_internal(const char *format, va_list args)
|
||||||
case 's':
|
case 's':
|
||||||
{
|
{
|
||||||
char *s = va_arg(args, char *);
|
char *s = va_arg(args, char *);
|
||||||
|
if (!s) s = "(null)";
|
||||||
kprint(s);
|
kprint(s);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -157,6 +159,12 @@ void kprintf_internal(const char *format, va_list args)
|
||||||
kprint_int(d);
|
kprint_int(d);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 'u':
|
||||||
|
{
|
||||||
|
unsigned int u = va_arg(args, unsigned int);
|
||||||
|
kprint_int((int)u);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case 'f':
|
case 'f':
|
||||||
{
|
{
|
||||||
double f = va_arg(args, double);
|
double f = va_arg(args, double);
|
||||||
|
|
@ -166,7 +174,11 @@ void kprintf_internal(const char *format, va_list args)
|
||||||
case 'x': // Hex
|
case 'x': // Hex
|
||||||
case 'p': // Pointer
|
case 'p': // Pointer
|
||||||
{
|
{
|
||||||
uint64_t x = va_arg(args, uint64_t);
|
#if UINTPTR_MAX == 0xffffffffULL
|
||||||
|
unsigned int x = va_arg(args, unsigned int);
|
||||||
|
#else
|
||||||
|
uint64_t x = va_arg(args, uint64_t);
|
||||||
|
#endif
|
||||||
kprint_hex(x);
|
kprint_hex(x);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue