libc/stream: Support lowsyslog.
This commit added support for lowsyslog. Signed-off-by: ouyangxiangzhen <ouyangxiangzhen@xiaomi.com>
This commit is contained in:
parent
0c9a239b9e
commit
9f01e5c972
3 changed files with 42 additions and 3 deletions
|
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
#include <nuttx/config.h>
|
#include <nuttx/config.h>
|
||||||
#include <nuttx/compiler.h>
|
#include <nuttx/compiler.h>
|
||||||
|
#include <nuttx/streams.h>
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_DEBUG_H
|
#ifdef CONFIG_ARCH_DEBUG_H
|
||||||
# include <arch/debug.h>
|
# include <arch/debug.h>
|
||||||
|
|
@ -1318,6 +1319,26 @@
|
||||||
# define resetinfodumpbuffer(m,b,n)
|
# define resetinfodumpbuffer(m,b,n)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: lowsyslog
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* lowsyslog() is used for output debug information at early boot-stage.
|
||||||
|
*
|
||||||
|
* The NuttX implementation does not support any special formatting
|
||||||
|
* characters beyond those supported by printf.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#define lowsyslog(...) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
struct lib_outstream_s stream; \
|
||||||
|
lib_lowoutstream(&stream); \
|
||||||
|
lib_sprintf(&stream, __VA_ARGS__); \
|
||||||
|
} \
|
||||||
|
while (0)
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Function Prototypes
|
* Public Function Prototypes
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -2820,6 +2820,18 @@ int arch_phy_irq(FAR const char *intf, xcpt_t handler, void *arg,
|
||||||
|
|
||||||
void up_putc(int ch);
|
void up_putc(int ch);
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: up_lowputc
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Output one character in early boot-stages.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_LOWPUTC
|
||||||
|
void up_lowputc(int ch);
|
||||||
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: up_puts
|
* Name: up_puts
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ static void lowoutstream_putc(FAR struct lib_outstream_s *self, int ch)
|
||||||
{
|
{
|
||||||
DEBUGASSERT(self);
|
DEBUGASSERT(self);
|
||||||
|
|
||||||
up_putc(ch);
|
up_lowputc(ch);
|
||||||
|
|
||||||
if (ch != EOF)
|
if (ch != EOF)
|
||||||
{
|
{
|
||||||
|
|
@ -82,10 +82,16 @@ static void lowoutstream_putc(FAR struct lib_outstream_s *self, int ch)
|
||||||
static ssize_t lowoutstream_puts(FAR struct lib_outstream_s *self,
|
static ssize_t lowoutstream_puts(FAR struct lib_outstream_s *self,
|
||||||
FAR const void *buf, size_t len)
|
FAR const void *buf, size_t len)
|
||||||
{
|
{
|
||||||
|
FAR const char *str = (FAR const char *)buf;
|
||||||
|
size_t idx = 0;
|
||||||
DEBUGASSERT(self);
|
DEBUGASSERT(self);
|
||||||
|
|
||||||
self->nput += len;
|
while (str[idx] != 0 && idx < len)
|
||||||
up_nputs(buf, len);
|
{
|
||||||
|
lowoutstream_putc(self, str[idx]);
|
||||||
|
idx++;
|
||||||
|
}
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue