ARM: 8705/1: early_printk: use printascii() rather than printch()
With printch() the console messages are sent out one character at a time which is agonizingly slow especially with semihosting as the whole trap intercept, remote byte access, and system resume danse is performed for every single character across a relatively slow remote debug connection. Let's use printascii() to send a whole string at once. This is also going to be more efficient, albeit to a quite lesser extent, with serial ports as well. Signed-off-by: Nicolas Pitre <nico@linaro.org> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
This commit is contained in:
Родитель
e11d1314d8
Коммит
de880632fc
|
@ -11,16 +11,20 @@
|
|||
#include <linux/kernel.h>
|
||||
#include <linux/console.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
extern void printch(int);
|
||||
extern void printascii(const char *);
|
||||
|
||||
static void early_write(const char *s, unsigned n)
|
||||
{
|
||||
while (n-- > 0) {
|
||||
if (*s == '\n')
|
||||
printch('\r');
|
||||
printch(*s);
|
||||
s++;
|
||||
char buf[128];
|
||||
while (n) {
|
||||
unsigned l = min(n, sizeof(buf)-1);
|
||||
memcpy(buf, s, l);
|
||||
buf[l] = 0;
|
||||
s += l;
|
||||
n -= l;
|
||||
printascii(buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче