Some renaming so that future features will fit in better; If the architecture provides its only system logging (via CONFIG_ARCH_SYSLOG), then syslog_initialize() is stubbed out
This commit is contained in:
parent
99ad3e9bcf
commit
9f260ca193
@ -160,7 +160,7 @@ config ARMV7M_STACKCHECK
|
|||||||
config ARMV7M_ITMSYSLOG
|
config ARMV7M_ITMSYSLOG
|
||||||
bool "ITM SYSLOG support"
|
bool "ITM SYSLOG support"
|
||||||
default n
|
default n
|
||||||
select ARCH_HAVE_SYSLOG
|
select ARCH_SYSLOG
|
||||||
select SYSLOG
|
select SYSLOG
|
||||||
---help---
|
---help---
|
||||||
Enable hooks to support ITM syslog output. This requires additional
|
Enable hooks to support ITM syslog output. This requires additional
|
||||||
|
@ -7,7 +7,7 @@ comment "System Logging"
|
|||||||
|
|
||||||
# Selected if the architecture has its own, built-in SYSLOGgin enabled
|
# Selected if the architecture has its own, built-in SYSLOGgin enabled
|
||||||
|
|
||||||
config ARCH_HAVE_SYSLOG
|
config ARCH_SYSLOG
|
||||||
bool
|
bool
|
||||||
default n
|
default n
|
||||||
|
|
||||||
@ -29,7 +29,7 @@ if RAMLOG
|
|||||||
config RAMLOG_SYSLOG
|
config RAMLOG_SYSLOG
|
||||||
bool "Use RAMLOG for SYSLOG"
|
bool "Use RAMLOG for SYSLOG"
|
||||||
default n
|
default n
|
||||||
depends on SYSLOG && !ARCH_HAVE_SYSLOG
|
depends on SYSLOG && !ARCH_SYSLOG
|
||||||
---help---
|
---help---
|
||||||
Use the RAM logging device for the syslogging interface. If this feature
|
Use the RAM logging device for the syslogging interface. If this feature
|
||||||
is enabled (along with SYSLOG), then all debug output (only) will be re-directed
|
is enabled (along with SYSLOG), then all debug output (only) will be re-directed
|
||||||
@ -107,7 +107,7 @@ if SYSLOG
|
|||||||
config SYSLOG_CHAR
|
config SYSLOG_CHAR
|
||||||
bool "System log character device support"
|
bool "System log character device support"
|
||||||
default y
|
default y
|
||||||
depends on !ARCH_HAVE_SYSLOG
|
depends on !ARCH_SYSLOG
|
||||||
---help---
|
---help---
|
||||||
Enable the generic character device for the SYSLOG. The full path to the
|
Enable the generic character device for the SYSLOG. The full path to the
|
||||||
SYSLOG device is provided by SYSLOG_DEVPATH. A valid character device (or
|
SYSLOG device is provided by SYSLOG_DEVPATH. A valid character device (or
|
||||||
|
@ -39,6 +39,10 @@
|
|||||||
|
|
||||||
CSRCS += syslog_initialize.c vsyslog.c vlowsyslog.c syslogstream.c
|
CSRCS += syslog_initialize.c vsyslog.c vlowsyslog.c syslogstream.c
|
||||||
|
|
||||||
|
ifneq ($(CONFIG_ARCH_SYSLOG),y)
|
||||||
|
CSRCS += syslog_initialize.c
|
||||||
|
endif
|
||||||
|
|
||||||
# The note driver is hosted in this directory, but is not associated with
|
# The note driver is hosted in this directory, but is not associated with
|
||||||
# SYSLOGging
|
# SYSLOGging
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@
|
|||||||
|
|
||||||
/* This enumeration represents the state of the SYSLOG device interface */
|
/* This enumeration represents the state of the SYSLOG device interface */
|
||||||
|
|
||||||
enum syslog_state_e
|
enum syslog_dev_state
|
||||||
{
|
{
|
||||||
SYSLOG_UNINITIALIZED = 0, /* SYSLOG has not been initialized */
|
SYSLOG_UNINITIALIZED = 0, /* SYSLOG has not been initialized */
|
||||||
SYSLOG_INITIALIZING, /* SYSLOG is being initialized */
|
SYSLOG_INITIALIZING, /* SYSLOG is being initialized */
|
||||||
@ -89,7 +89,7 @@ enum syslog_state_e
|
|||||||
|
|
||||||
struct syslog_dev_s
|
struct syslog_dev_s
|
||||||
{
|
{
|
||||||
uint8_t sl_state; /* See enum syslog_state_e */
|
uint8_t sl_state; /* See enum syslog_dev_state */
|
||||||
sem_t sl_sem; /* Enforces mutually exclusive access */
|
sem_t sl_sem; /* Enforces mutually exclusive access */
|
||||||
pid_t sl_holder; /* PID of the thread that holds the semaphore */
|
pid_t sl_holder; /* PID of the thread that holds the semaphore */
|
||||||
struct file sl_file; /* The syslog file structure */
|
struct file sl_file; /* The syslog file structure */
|
||||||
@ -101,7 +101,7 @@ struct syslog_dev_s
|
|||||||
|
|
||||||
/* This is the device structure for the console or syslogging function. */
|
/* This is the device structure for the console or syslogging function. */
|
||||||
|
|
||||||
static struct syslog_dev_s g_sysdev;
|
static struct syslog_dev_s g_syslog_dev;
|
||||||
static const uint8_t g_syscrlf[2] =
|
static const uint8_t g_syscrlf[2] =
|
||||||
{
|
{
|
||||||
'\r', '\n'
|
'\r', '\n'
|
||||||
@ -112,25 +112,25 @@ static const uint8_t g_syscrlf[2] =
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: syslog_takesem
|
* Name: syslog_dev_takesem
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Write to the syslog device
|
* Write to the syslog device
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static inline int syslog_takesem(void)
|
static inline int syslog_dev_takesem(void)
|
||||||
{
|
{
|
||||||
pid_t me = getpid();
|
pid_t me = getpid();
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* Does this thread already hold the semaphore? That could happen if
|
/* Does this thread already hold the semaphore? That could happen if
|
||||||
* we wer called recursively, i.e., if the logic kicked off by
|
* we wer called recursively, i.e., if the logic kicked off by
|
||||||
* syslog_write() where to generate more debug output. Return an error
|
* syslog_dev_write() where to generate more debug output. Return an error
|
||||||
* in that case.
|
* in that case.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (g_sysdev.sl_holder == me)
|
if (g_syslog_dev.sl_holder == me)
|
||||||
{
|
{
|
||||||
/* Return an error (instead of deadlocking) */
|
/* Return an error (instead of deadlocking) */
|
||||||
|
|
||||||
@ -141,7 +141,7 @@ static inline int syslog_takesem(void)
|
|||||||
* thread. Wait for it to become available.
|
* thread. Wait for it to become available.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ret = sem_wait(&g_sysdev.sl_sem);
|
ret = sem_wait(&g_syslog_dev.sl_sem);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
return -get_errno();
|
return -get_errno();
|
||||||
@ -151,53 +151,53 @@ static inline int syslog_takesem(void)
|
|||||||
* of the semaphore.
|
* of the semaphore.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
g_sysdev.sl_holder = me;
|
g_syslog_dev.sl_holder = me;
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: syslog_givesem
|
* Name: syslog_dev_givesem
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Write to the syslog device
|
* Write to the syslog device
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static inline void syslog_givesem(void)
|
static inline void syslog_dev_givesem(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_DEBUG_ASSERTIONS
|
#ifdef CONFIG_DEBUG_ASSERTIONS
|
||||||
pid_t me = getpid();
|
pid_t me = getpid();
|
||||||
DEBUGASSERT(g_sysdev.sl_holder == me);
|
DEBUGASSERT(g_syslog_dev.sl_holder == me);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Relinquish the semaphore */
|
/* Relinquish the semaphore */
|
||||||
|
|
||||||
g_sysdev.sl_holder = NO_HOLDER;
|
g_syslog_dev.sl_holder = NO_HOLDER;
|
||||||
sem_post(&g_sysdev.sl_sem);
|
sem_post(&g_syslog_dev.sl_sem);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: syslog_write
|
* Name: syslog_dev_write
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Write to the syslog device
|
* Write to the syslog device
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static inline ssize_t syslog_write(FAR const void *buf, size_t nbytes)
|
static inline ssize_t syslog_dev_write(FAR const void *buf, size_t nbytes)
|
||||||
{
|
{
|
||||||
FAR struct inode *inode;
|
FAR struct inode *inode;
|
||||||
|
|
||||||
/* Let the driver perform the write */
|
/* Let the driver perform the write */
|
||||||
|
|
||||||
inode = g_sysdev.sl_file.f_inode;
|
inode = g_syslog_dev.sl_file.f_inode;
|
||||||
DEBUGASSERT(inode != NULL);
|
DEBUGASSERT(inode != NULL);
|
||||||
|
|
||||||
return inode->u.i_ops->write(&g_sysdev.sl_file, buf, nbytes);
|
return inode->u.i_ops->write(&g_syslog_dev.sl_file, buf, nbytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: syslog_flush
|
* Name: syslog_dev_flush
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Flush any buffer data in the file system to media.
|
* Flush any buffer data in the file system to media.
|
||||||
@ -205,9 +205,9 @@ static inline ssize_t syslog_write(FAR const void *buf, size_t nbytes)
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifndef CONFIG_DISABLE_MOUNTPOINT
|
#ifndef CONFIG_DISABLE_MOUNTPOINT
|
||||||
static inline void syslog_flush(void)
|
static inline void syslog_dev_flush(void)
|
||||||
{
|
{
|
||||||
FAR struct inode *inode = g_sysdev.sl_file.f_inode;
|
FAR struct inode *inode = g_syslog_dev.sl_file.f_inode;
|
||||||
|
|
||||||
/* Is this a mountpoint? Does it support the sync method? */
|
/* Is this a mountpoint? Does it support the sync method? */
|
||||||
|
|
||||||
@ -216,7 +216,7 @@ static inline void syslog_flush(void)
|
|||||||
{
|
{
|
||||||
/* Yes... synchronize to the stream */
|
/* Yes... synchronize to the stream */
|
||||||
|
|
||||||
(void)inode->u.i_mops->sync(&g_sysdev.sl_file);
|
(void)inode->u.i_mops->sync(&g_syslog_dev.sl_file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -259,10 +259,10 @@ int syslog_dev_initialize(void)
|
|||||||
* SYSLOG_REOPEN.. Not SYSLOG_INITIALIZING, SYSLOG_FAILURE, SYSLOG_OPENED.
|
* SYSLOG_REOPEN.. Not SYSLOG_INITIALIZING, SYSLOG_FAILURE, SYSLOG_OPENED.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
DEBUGASSERT(g_sysdev.sl_state == SYSLOG_UNINITIALIZED ||
|
DEBUGASSERT(g_syslog_dev.sl_state == SYSLOG_UNINITIALIZED ||
|
||||||
g_sysdev.sl_state == SYSLOG_REOPEN);
|
g_syslog_dev.sl_state == SYSLOG_REOPEN);
|
||||||
|
|
||||||
g_sysdev.sl_state = SYSLOG_INITIALIZING;
|
g_syslog_dev.sl_state = SYSLOG_INITIALIZING;
|
||||||
|
|
||||||
/* Open the device driver. */
|
/* Open the device driver. */
|
||||||
|
|
||||||
@ -282,7 +282,7 @@ int syslog_dev_initialize(void)
|
|||||||
* not yet been installed.
|
* not yet been installed.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
g_sysdev.sl_state = SYSLOG_REOPEN;
|
g_syslog_dev.sl_state = SYSLOG_REOPEN;
|
||||||
return -errcode;
|
return -errcode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -291,23 +291,23 @@ int syslog_dev_initialize(void)
|
|||||||
* descriptor allows us to use the device on all threads in all tasks.
|
* descriptor allows us to use the device on all threads in all tasks.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ret = file_detach(fd, &g_sysdev.sl_file);
|
ret = file_detach(fd, &g_syslog_dev.sl_file);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
/* This should not happen and means that something very bad has
|
/* This should not happen and means that something very bad has
|
||||||
* occurred.
|
* occurred.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
g_sysdev.sl_state = SYSLOG_FAILURE;
|
g_syslog_dev.sl_state = SYSLOG_FAILURE;
|
||||||
close(fd);
|
close(fd);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The SYSLOG device is open and ready for writing. */
|
/* The SYSLOG device is open and ready for writing. */
|
||||||
|
|
||||||
sem_init(&g_sysdev.sl_sem, 0, 1);
|
sem_init(&g_syslog_dev.sl_sem, 0, 1);
|
||||||
g_sysdev.sl_holder = NO_HOLDER;
|
g_syslog_dev.sl_holder = NO_HOLDER;
|
||||||
g_sysdev.sl_state = SYSLOG_OPENED;
|
g_syslog_dev.sl_state = SYSLOG_OPENED;
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -368,12 +368,12 @@ int syslog_putc(int ch)
|
|||||||
* has been successfully opened.
|
* has been successfully opened.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (g_sysdev.sl_state != SYSLOG_OPENED)
|
if (g_syslog_dev.sl_state != SYSLOG_OPENED)
|
||||||
{
|
{
|
||||||
/* Case (1) and (2) */
|
/* Case (1) and (2) */
|
||||||
|
|
||||||
if (g_sysdev.sl_state == SYSLOG_UNINITIALIZED ||
|
if (g_syslog_dev.sl_state == SYSLOG_UNINITIALIZED ||
|
||||||
g_sysdev.sl_state == SYSLOG_INITIALIZING)
|
g_syslog_dev.sl_state == SYSLOG_INITIALIZING)
|
||||||
{
|
{
|
||||||
errcode = EAGAIN; /* Can't access the SYSLOG now... maybe next time? */
|
errcode = EAGAIN; /* Can't access the SYSLOG now... maybe next time? */
|
||||||
goto errout_with_errcode;
|
goto errout_with_errcode;
|
||||||
@ -381,7 +381,7 @@ int syslog_putc(int ch)
|
|||||||
|
|
||||||
/* Case (6) */
|
/* Case (6) */
|
||||||
|
|
||||||
if (g_sysdev.sl_state == SYSLOG_FAILURE)
|
if (g_syslog_dev.sl_state == SYSLOG_FAILURE)
|
||||||
{
|
{
|
||||||
errcode = ENXIO; /* There is no SYSLOG device */
|
errcode = ENXIO; /* There is no SYSLOG device */
|
||||||
goto errout_with_errcode;
|
goto errout_with_errcode;
|
||||||
@ -399,7 +399,7 @@ int syslog_putc(int ch)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
sched_lock();
|
sched_lock();
|
||||||
if (g_sysdev.sl_state == SYSLOG_REOPEN)
|
if (g_syslog_dev.sl_state == SYSLOG_REOPEN)
|
||||||
{
|
{
|
||||||
/* Try again to initialize the device. We may do this repeatedly
|
/* Try again to initialize the device. We may do this repeatedly
|
||||||
* because the log device might be something that was not ready
|
* because the log device might be something that was not ready
|
||||||
@ -418,7 +418,7 @@ int syslog_putc(int ch)
|
|||||||
}
|
}
|
||||||
|
|
||||||
sched_unlock();
|
sched_unlock();
|
||||||
DEBUGASSERT(g_sysdev.sl_state == SYSLOG_OPENED);
|
DEBUGASSERT(g_syslog_dev.sl_state == SYSLOG_OPENED);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ignore carriage returns */
|
/* Ignore carriage returns */
|
||||||
@ -432,11 +432,11 @@ int syslog_putc(int ch)
|
|||||||
* value to write.
|
* value to write.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ret = syslog_takesem();
|
ret = syslog_dev_takesem();
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
/* We probably already hold the semaphore and were probably
|
/* We probably already hold the semaphore and were probably
|
||||||
* re-entered by the logic kicked off by syslog_write().
|
* re-entered by the logic kicked off by syslog_dev_write().
|
||||||
* We might also have been interrupted by a signal. Either
|
* We might also have been interrupted by a signal. Either
|
||||||
* way, we are outta here.
|
* way, we are outta here.
|
||||||
*/
|
*/
|
||||||
@ -451,7 +451,7 @@ int syslog_putc(int ch)
|
|||||||
{
|
{
|
||||||
/* Write the CR-LF sequence */
|
/* Write the CR-LF sequence */
|
||||||
|
|
||||||
nbytes = syslog_write(g_syscrlf, 2);
|
nbytes = syslog_dev_write(g_syscrlf, 2);
|
||||||
|
|
||||||
/* Synchronize the file when each CR-LF is encountered (i.e.,
|
/* Synchronize the file when each CR-LF is encountered (i.e.,
|
||||||
* implements line buffering always).
|
* implements line buffering always).
|
||||||
@ -460,7 +460,7 @@ int syslog_putc(int ch)
|
|||||||
#ifndef CONFIG_DISABLE_MOUNTPOINT
|
#ifndef CONFIG_DISABLE_MOUNTPOINT
|
||||||
if (nbytes > 0)
|
if (nbytes > 0)
|
||||||
{
|
{
|
||||||
syslog_flush();
|
syslog_dev_flush();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -469,10 +469,10 @@ int syslog_putc(int ch)
|
|||||||
/* Write the non-newline character (and don't flush) */
|
/* Write the non-newline character (and don't flush) */
|
||||||
|
|
||||||
uch = (uint8_t)ch;
|
uch = (uint8_t)ch;
|
||||||
nbytes = syslog_write(&uch, 1);
|
nbytes = syslog_dev_write(&uch, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
syslog_givesem();
|
syslog_dev_givesem();
|
||||||
|
|
||||||
/* Check if the write was successful. If not, nbytes will be
|
/* Check if the write was successful. If not, nbytes will be
|
||||||
* a negated errno value.
|
* a negated errno value.
|
||||||
|
@ -45,6 +45,8 @@
|
|||||||
|
|
||||||
#include "syslog.h"
|
#include "syslog.h"
|
||||||
|
|
||||||
|
#ifndef CONFIG_ARCH_SYSLOG
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Functions
|
* Public Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -54,10 +56,19 @@
|
|||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* One power up, the SYSLOG facility is non-existent or limited to very
|
* One power up, the SYSLOG facility is non-existent or limited to very
|
||||||
* low-level output. This function is called later in the intialization
|
* low-level output. This function is called later in the initialization
|
||||||
* sequence after full driver support has been initialized. It installs
|
* sequence after full driver support has been initialized. It installs
|
||||||
* the configured SYSLOG drivers and enables full SYSLOGing capability.
|
* the configured SYSLOG drivers and enables full SYSLOGing capability.
|
||||||
*
|
*
|
||||||
|
* This function performs these basic operations:
|
||||||
|
*
|
||||||
|
* - Initialize the SYSLOG device
|
||||||
|
* - Call syslog_channel() to begin using that device.
|
||||||
|
*
|
||||||
|
* If CONFIG_ARCH_SYSLOG is selected, then the architecture-specifica
|
||||||
|
* logic will provide its own SYSLOG device initialize which must include
|
||||||
|
* as a minimum a call to syslog_channel() to use the device.
|
||||||
|
*
|
||||||
* Input Parameters:
|
* Input Parameters:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
@ -92,3 +103,5 @@ int syslog_initialize(void)
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* CONFIG_ARCH_SYSLOG */
|
||||||
|
@ -97,15 +97,25 @@ extern "C"
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Function Prototypes
|
* Public Function Prototypes
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: syslog_initialize
|
* Name: syslog_initialize
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* One power up, the SYSLOG facility is non-existent or limited to very
|
* One power up, the SYSLOG facility is non-existent or limited to very
|
||||||
* low-level output. This function is called later in the intialization
|
* low-level output. This function is called later in the initialization
|
||||||
* sequence after full driver support has been initialized. It installs
|
* sequence after full driver support has been initialized. It installs
|
||||||
* the configured SYSLOG drivers and enables full SYSLOGing capability.
|
* the configured SYSLOG drivers and enables full SYSLOGing capability.
|
||||||
*
|
*
|
||||||
|
* This function performs these basic operations:
|
||||||
|
*
|
||||||
|
* - Initialize the SYSLOG device
|
||||||
|
* - Call syslog_channel() to begin using that device.
|
||||||
|
*
|
||||||
|
* If CONFIG_ARCH_SYSLOG is selected, then the architecture-specifica
|
||||||
|
* logic will provide its own SYSLOG device initialize which must include
|
||||||
|
* as a minimum a call to syslog_channel() to use the device.
|
||||||
|
*
|
||||||
* Input Parameters:
|
* Input Parameters:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
@ -115,7 +125,11 @@ extern "C"
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef CONFIG_ARCH_SYSLOG
|
||||||
int syslog_initialize(void);
|
int syslog_initialize(void);
|
||||||
|
#else
|
||||||
|
# define syslog_initialize()
|
||||||
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: syslog_putc
|
* Name: syslog_putc
|
||||||
|
Loading…
Reference in New Issue
Block a user