syslog/default_channel: fix log confusion when multi task writing together
Signed-off-by: Jiuzhu Dong <dongjiuzhu1@xiaomi.com>
This commit is contained in:
parent
707404d415
commit
b30bf4ff06
@ -56,10 +56,12 @@
|
|||||||
#if defined(CONFIG_SYSLOG_DEFAULT)
|
#if defined(CONFIG_SYSLOG_DEFAULT)
|
||||||
static int syslog_default_putc(FAR struct syslog_channel_s *channel,
|
static int syslog_default_putc(FAR struct syslog_channel_s *channel,
|
||||||
int ch);
|
int ch);
|
||||||
|
static ssize_t syslog_default_write(FAR struct syslog_channel_s *channel,
|
||||||
|
FAR const char *buffer, size_t buflen);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Data
|
* Private Data
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#if defined(CONFIG_RAMLOG_SYSLOG)
|
#if defined(CONFIG_RAMLOG_SYSLOG)
|
||||||
@ -91,10 +93,14 @@ static struct syslog_channel_s g_rpmsg_channel =
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_SYSLOG_DEFAULT)
|
#if defined(CONFIG_SYSLOG_DEFAULT)
|
||||||
|
static sem_t g_syslog_default_sem = SEM_INITIALIZER(1);
|
||||||
|
|
||||||
static const struct syslog_channel_ops_s g_default_channel_ops =
|
static const struct syslog_channel_ops_s g_default_channel_ops =
|
||||||
{
|
{
|
||||||
syslog_default_putc,
|
syslog_default_putc,
|
||||||
syslog_default_putc
|
syslog_default_putc,
|
||||||
|
NULL,
|
||||||
|
syslog_default_write
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct syslog_channel_s g_default_channel =
|
static struct syslog_channel_s g_default_channel =
|
||||||
@ -126,7 +132,7 @@ FAR struct syslog_channel_s
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: syslog_default_putc and syslog_default_flush
|
* Name: syslog_default_putc
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* If the arch supports a low-level putc function, output will be
|
* If the arch supports a low-level putc function, output will be
|
||||||
@ -145,6 +151,24 @@ static int syslog_default_putc(FAR struct syslog_channel_s *channel, int ch)
|
|||||||
|
|
||||||
return ch;
|
return ch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ssize_t syslog_default_write(FAR struct syslog_channel_s *channel,
|
||||||
|
FAR const char *buffer, size_t buflen)
|
||||||
|
{
|
||||||
|
#if defined(CONFIG_ARCH_LOWPUTC)
|
||||||
|
size_t nwritten;
|
||||||
|
|
||||||
|
nxsem_wait(&g_syslog_default_sem);
|
||||||
|
for (nwritten = 0; nwritten < buflen; nwritten++)
|
||||||
|
{
|
||||||
|
up_putc(buffer[nwritten]);
|
||||||
|
}
|
||||||
|
|
||||||
|
nxsem_post(&g_syslog_default_sem);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
Loading…
Reference in New Issue
Block a user