SYSLOG: Now a two phase initialization. Some SYSLOG channels cannot be initialized until later in the bringup
This commit is contained in:
parent
5385266756
commit
62d8f839c7
@ -246,9 +246,12 @@ void up_initialize(void)
|
|||||||
up_rnginitialize();
|
up_rnginitialize();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initialize the system logging device */
|
/* Early initialization of the system logging device. Some SYSLOG channel
|
||||||
|
* can be initialized early in the initialization sequence because they
|
||||||
|
* depend on only minimal OS initialization.
|
||||||
|
*/
|
||||||
|
|
||||||
syslog_initialize();
|
syslog_initialize(SYSLOG_INIT_EARLY);
|
||||||
|
|
||||||
#ifndef CONFIG_NETDEV_LATEINIT
|
#ifndef CONFIG_NETDEV_LATEINIT
|
||||||
/* Initialize the network */
|
/* Initialize the network */
|
||||||
|
@ -258,9 +258,12 @@ void up_initialize(void)
|
|||||||
ramlog_consoleinit();
|
ramlog_consoleinit();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initialize the system logging device */
|
/* Early initialization of the system logging device. Some SYSLOG channel
|
||||||
|
* can be initialized early in the initialization sequence because they
|
||||||
|
* depend on only minimal OS initialization.
|
||||||
|
*/
|
||||||
|
|
||||||
syslog_initialize();
|
syslog_initialize(SYSLOG_INIT_EARLY);
|
||||||
|
|
||||||
#ifndef CONFIG_NETDEV_LATEINIT
|
#ifndef CONFIG_NETDEV_LATEINIT
|
||||||
/* Initialize the network */
|
/* Initialize the network */
|
||||||
|
@ -184,9 +184,12 @@ void up_initialize(void)
|
|||||||
ramlog_consoleinit();
|
ramlog_consoleinit();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initialize the system logging device */
|
/* Early initialization of the system logging device. Some SYSLOG channel
|
||||||
|
* can be initialized early in the initialization sequence because they
|
||||||
|
* depend on only minimal OS initialization.
|
||||||
|
*/
|
||||||
|
|
||||||
syslog_initialize();
|
syslog_initialize(SYSLOG_INIT_EARLY);
|
||||||
|
|
||||||
#ifndef CONFIG_NETDEV_LATEINIT
|
#ifndef CONFIG_NETDEV_LATEINIT
|
||||||
/* Initialize the network */
|
/* Initialize the network */
|
||||||
|
@ -186,9 +186,12 @@ void up_initialize(void)
|
|||||||
ramlog_consoleinit();
|
ramlog_consoleinit();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initialize the system logging device */
|
/* Early initialization of the system logging device. Some SYSLOG channel
|
||||||
|
* can be initialized early in the initialization sequence because they
|
||||||
|
* depend on only minimal OS initialization.
|
||||||
|
*/
|
||||||
|
|
||||||
syslog_initialize();
|
syslog_initialize(SYSLOG_INIT_EARLY);
|
||||||
|
|
||||||
#ifndef CONFIG_NETDEV_LATEINIT
|
#ifndef CONFIG_NETDEV_LATEINIT
|
||||||
/* Initialize the network */
|
/* Initialize the network */
|
||||||
|
@ -178,9 +178,12 @@ void up_initialize(void)
|
|||||||
ramlog_consoleinit();
|
ramlog_consoleinit();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initialize the system logging device */
|
/* Early initialization of the system logging device. Some SYSLOG channel
|
||||||
|
* can be initialized early in the initialization sequence because they
|
||||||
|
* depend on only minimal OS initialization.
|
||||||
|
*/
|
||||||
|
|
||||||
syslog_initialize();
|
syslog_initialize(SYSLOG_INIT_EARLY);
|
||||||
|
|
||||||
#ifndef CONFIG_NETDEV_LATEINIT
|
#ifndef CONFIG_NETDEV_LATEINIT
|
||||||
/* Initialize the network */
|
/* Initialize the network */
|
||||||
|
@ -168,9 +168,12 @@ void up_initialize(void)
|
|||||||
ramlog_consoleinit();
|
ramlog_consoleinit();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initialize the system logging device */
|
/* Early initialization of the system logging device. Some SYSLOG channel
|
||||||
|
* can be initialized early in the initialization sequence because they
|
||||||
|
* depend on only minimal OS initialization.
|
||||||
|
*/
|
||||||
|
|
||||||
syslog_initialize();
|
syslog_initialize(SYSLOG_INIT_EARLY);
|
||||||
|
|
||||||
#if defined(CONFIG_FS_FAT) && !defined(CONFIG_DISABLE_MOUNTPOINT)
|
#if defined(CONFIG_FS_FAT) && !defined(CONFIG_DISABLE_MOUNTPOINT)
|
||||||
up_registerblockdevice(); /* Our FAT ramdisk at /dev/ram0 */
|
up_registerblockdevice(); /* Our FAT ramdisk at /dev/ram0 */
|
||||||
|
@ -186,9 +186,12 @@ void up_initialize(void)
|
|||||||
ramlog_consoleinit();
|
ramlog_consoleinit();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initialize the system logging device */
|
/* Early initialization of the system logging device. Some SYSLOG channel
|
||||||
|
* can be initialized early in the initialization sequence because they
|
||||||
|
* depend on only minimal OS initialization.
|
||||||
|
*/
|
||||||
|
|
||||||
syslog_initialize();
|
syslog_initialize(SYSLOG_INIT_EARLY);
|
||||||
|
|
||||||
#ifndef CONFIG_NETDEV_LATEINIT
|
#ifndef CONFIG_NETDEV_LATEINIT
|
||||||
/* Initialize the network */
|
/* Initialize the network */
|
||||||
|
@ -186,9 +186,12 @@ void up_initialize(void)
|
|||||||
ramlog_consoleinit();
|
ramlog_consoleinit();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initialize the system logging device */
|
/* Early initialization of the system logging device. Some SYSLOG channel
|
||||||
|
* can be initialized early in the initialization sequence because they
|
||||||
|
* depend on only minimal OS initialization.
|
||||||
|
*/
|
||||||
|
|
||||||
syslog_initialize();
|
syslog_initialize(SYSLOG_INIT_EARLY);
|
||||||
|
|
||||||
#ifndef CONFIG_NETDEV_LATEINIT
|
#ifndef CONFIG_NETDEV_LATEINIT
|
||||||
/* Initialize the network */
|
/* Initialize the network */
|
||||||
|
@ -183,9 +183,12 @@ void up_initialize(void)
|
|||||||
ramlog_consoleinit();
|
ramlog_consoleinit();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initialize the system logging device */
|
/* Early initialization of the system logging device. Some SYSLOG channel
|
||||||
|
* can be initialized early in the initialization sequence because they
|
||||||
|
* depend on minimal OS initialization.
|
||||||
|
*/
|
||||||
|
|
||||||
syslog_initialize();
|
syslog_initialize(SYSLOG_INIT_EARLY);
|
||||||
|
|
||||||
#ifndef CONFIG_NETDEV_LATEINIT
|
#ifndef CONFIG_NETDEV_LATEINIT
|
||||||
/* Initialize the network */
|
/* Initialize the network */
|
||||||
|
@ -70,7 +70,7 @@
|
|||||||
* as a minimum a call to syslog_channel() to use the device.
|
* as a minimum a call to syslog_channel() to use the device.
|
||||||
*
|
*
|
||||||
* Input Parameters:
|
* Input Parameters:
|
||||||
* None
|
* phase - One of {SYSLOG_INIT_EARLY, SYSLOG_INIT_LATE}
|
||||||
*
|
*
|
||||||
* Returned Value:
|
* Returned Value:
|
||||||
* Zero (OK) is returned on success; a negated errno value is returned on
|
* Zero (OK) is returned on success; a negated errno value is returned on
|
||||||
@ -78,31 +78,33 @@
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int syslog_initialize(void)
|
int syslog_initialize(enum syslog_init_e phase)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = OK;
|
||||||
|
|
||||||
/* Not much to this yet... more is coming */
|
|
||||||
|
|
||||||
#if defined(CONFIG_SYSLOG_CHAR)
|
#if defined(CONFIG_SYSLOG_CHAR)
|
||||||
/* Enable use of a character device as the SYSLOG device */
|
if (phase == SYSLOG_INIT_LATE)
|
||||||
|
{
|
||||||
|
/* Enable use of a character device as the SYSLOG device */
|
||||||
|
|
||||||
ret = syslog_dev_channel();
|
ret = syslog_dev_channel();
|
||||||
|
}
|
||||||
|
|
||||||
#elif defined(CONFIG_RAMLOG_SYSLOG)
|
#elif defined(CONFIG_RAMLOG_SYSLOG)
|
||||||
/* Use the RAMLOG as the SYSLOG device */
|
if (phase == SYSLOG_INIT_EARLY)
|
||||||
|
{
|
||||||
|
/* Use the RAMLOG as the SYSLOG device */
|
||||||
|
|
||||||
ret = ramlog_syslog_channel();
|
ret = ramlog_syslog_channel();
|
||||||
|
}
|
||||||
|
|
||||||
#elif defined(CONFIG_DEV_CONSOLE)
|
#elif defined(CONFIG_DEV_CONSOLE)
|
||||||
/* Use the console device as the SYSLOG device */
|
if (phase == SYSLOG_INIT_LATE)
|
||||||
|
{
|
||||||
|
/* Use the console device as the SYSLOG device */
|
||||||
|
|
||||||
ret = syslog_console_channel();
|
ret = syslog_console_channel();
|
||||||
|
}
|
||||||
#else
|
|
||||||
/* Nothing needs to be done */
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -335,6 +335,7 @@ int syslog_flush_intbuffer(FAR const struct syslog_channel_s *channel,
|
|||||||
}
|
}
|
||||||
while (ch != EOF && ret >= 0);
|
while (ch != EOF && ret >= 0);
|
||||||
|
|
||||||
|
sched_unlock();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,6 +93,15 @@
|
|||||||
* Public Types
|
* Public Types
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
/* Initialization phases */
|
||||||
|
|
||||||
|
enum syslog_init_e
|
||||||
|
{
|
||||||
|
SYSLOG_INIT_RESET = 0, /* Power on SYSLOG initializaton phase */
|
||||||
|
SYSLOG_INIT_EARLY, /* Early initialization in up_initialize() */
|
||||||
|
SYSLOG_INIT_LATE /* Late initialization in os_start(). */
|
||||||
|
};
|
||||||
|
|
||||||
/* This structure provides the interface to a SYSLOG device */
|
/* This structure provides the interface to a SYSLOG device */
|
||||||
|
|
||||||
typedef CODE int (*syslog_putc_t)(int ch);
|
typedef CODE int (*syslog_putc_t)(int ch);
|
||||||
@ -180,9 +189,9 @@ int syslog_channel(FAR const struct syslog_channel_s *channel);
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_SYSLOG
|
#ifndef CONFIG_ARCH_SYSLOG
|
||||||
int syslog_initialize(void);
|
int syslog_initialize(enum syslog_init_e phase);
|
||||||
#else
|
#else
|
||||||
# define syslog_initialize()
|
# define syslog_initialize(phase)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
@ -54,6 +54,7 @@
|
|||||||
#include <nuttx/mm/shm.h>
|
#include <nuttx/mm/shm.h>
|
||||||
#include <nuttx/kmalloc.h>
|
#include <nuttx/kmalloc.h>
|
||||||
#include <nuttx/sched_note.h>
|
#include <nuttx/sched_note.h>
|
||||||
|
#include <nuttx/syslog/syslog.h>
|
||||||
#include <nuttx/init.h>
|
#include <nuttx/init.h>
|
||||||
|
|
||||||
#include "sched/sched.h"
|
#include "sched/sched.h"
|
||||||
@ -757,7 +758,15 @@ void os_start(void)
|
|||||||
DEBUGVERIFY(group_initialize(&g_idletcb[cpu]));
|
DEBUGVERIFY(group_initialize(&g_idletcb[cpu]));
|
||||||
g_idletcb[cpu].cmn.group->tg_flags = GROUP_FLAG_NOCLDWAIT;
|
g_idletcb[cpu].cmn.group->tg_flags = GROUP_FLAG_NOCLDWAIT;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Start SYSLOG ***********************************************************/
|
||||||
|
/* Late initialization of the system logging device. Some SYSLOG channel
|
||||||
|
* must be initialized late in the initialization sequence because it may
|
||||||
|
* depend on having IDLE task file structures setup.
|
||||||
|
*/
|
||||||
|
|
||||||
|
syslog_initialize(SYSLOG_INIT_LATE);
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
/* Start all CPUs *********************************************************/
|
/* Start all CPUs *********************************************************/
|
||||||
|
Loading…
Reference in New Issue
Block a user