mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2025-08-24 15:31:22 +01:00
lib: sbi: Make console_puts/console_putc interchangeable
console_puts/console_putc should replace each other, but the previous sbi_putc can only use console_putc. This patch addresses this problem. Signed-off-by: Xiang W <wxjstz@126.com> Reviewed-by: Guo Ren <guoren@kernel.org> Reviewed-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
@@ -37,28 +37,22 @@ int sbi_getc(void)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sbi_putc(char ch)
|
|
||||||
{
|
|
||||||
if (console_dev && console_dev->console_putc) {
|
|
||||||
if (ch == '\n')
|
|
||||||
console_dev->console_putc('\r');
|
|
||||||
console_dev->console_putc(ch);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static unsigned long nputs(const char *str, unsigned long len)
|
static unsigned long nputs(const char *str, unsigned long len)
|
||||||
{
|
{
|
||||||
unsigned long i, ret;
|
unsigned long i;
|
||||||
|
|
||||||
if (console_dev && console_dev->console_puts) {
|
if (console_dev) {
|
||||||
ret = console_dev->console_puts(str, len);
|
if (console_dev->console_puts)
|
||||||
} else {
|
return console_dev->console_puts(str, len);
|
||||||
for (i = 0; i < len; i++)
|
else if (console_dev->console_putc) {
|
||||||
sbi_putc(str[i]);
|
for (i = 0; i < len; i++) {
|
||||||
ret = len;
|
if (str[i] == '\n')
|
||||||
|
console_dev->console_putc('\r');
|
||||||
|
console_dev->console_putc(str[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return len;
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nputs_all(const char *str, unsigned long len)
|
static void nputs_all(const char *str, unsigned long len)
|
||||||
@@ -69,6 +63,11 @@ static void nputs_all(const char *str, unsigned long len)
|
|||||||
p += nputs(&str[p], len - p);
|
p += nputs(&str[p], len - p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sbi_putc(char ch)
|
||||||
|
{
|
||||||
|
nputs_all(&ch, 1);
|
||||||
|
}
|
||||||
|
|
||||||
void sbi_puts(const char *str)
|
void sbi_puts(const char *str)
|
||||||
{
|
{
|
||||||
unsigned long len = sbi_strlen(str);
|
unsigned long len = sbi_strlen(str);
|
||||||
|
Reference in New Issue
Block a user