Alan,
I have fixed the performance issue. It is fast now. I had to make 3 changes.
1)
CONFIG_SYSLOG_BUFFER=y
2)
diff --git a/drivers/syslog/syslog_channel.c
b/drivers/syslog/syslog_channel.c
index 6bd80e6f5a..d1e47b54cf 100644
--- a/drivers/syslog/syslog_channel.c
+++ b/drivers/syslog/syslog_channel.c
@@ -170,6 +170,7 @@ static const struct syslog_channel_ops_s
g_default_channel_ops =
syslog_default_putc,
syslog_default_putc,
NULL,
+ syslog_default_write,
syslog_default_write
};
3)
diff --git a/arch/arm/src/common/arm_semi_syslog.c
b/arch/arm/src/common/arm_semi_syslog.c
index 702dbe35da..9fecac295d 100644
--- a/arch/arm/src/common/arm_semi_syslog.c
+++ b/arch/arm/src/common/arm_semi_syslog.c
@@ -62,16 +62,14 @@ void up_putc(int ch)
void up_nputs(const char *str, size_t len)
{
- if (len == ~((size_t)0))
- {
+#ifdef CONFIG_SYSLOG_BUFFER
+ *(char *)(str + len) = 0;
smh_call(SEMI_SYSLOG_WRITE0, (char *)str);
- }
- else
- {
+#else
while (len-- > 0)
{
up_putc(*str++);
}
- }
+#endif
}
#endif