#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

comment "System Logging"

# Selected if the architecture has its own, built-in SYSLOGging enabled

config ARCH_SYSLOG
	bool
	default n

config RAMLOG
	bool "RAM log device support"
	default n
	---help---
		This is a driver that was intended to support debugging output,
		aka syslogging, when the normal serial output is not available.
		For example, if you are using a telnet or USB serial console,
		the debug output will get lost.  However, the RAMLOG device should
		be usable even if system logging is disabled.

		This driver is similar to a pipe in that it saves the debugging
		output in a FIFO in RAM.  It differs from a pipe in numerous
		details as needed to support logging.

if RAMLOG
config RAMLOG_SYSLOG
	bool "Use RAMLOG for SYSLOG"
	default n
	depends on SYSLOG && !ARCH_SYSLOG
	---help---
		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
		to the circular buffer in RAM.  This RAM log can be view from NSH using the
		'dmesg'command.

		Do not enable more than one SYSLOG device.

config RAMLOG_CONSOLE
	bool "Use RAMLOG for /dev/console"
	default n
	depends on DEV_CONSOLE
	---help---
		Use the RAM logging device as a system console. If this feature is enabled (along
		with DEV_CONSOLE), then all console output will be re-directed to a circular
		buffer in RAM.  This is useful, for example, if the only console is a Telnet
		console.  Then in that case, console output from non-Telnet threads will go to
		the circular buffer and can be viewed using the NSH 'dmesg' command.

config RAMLOG_BUFSIZE
	int "RAMLOG buffer size"
	default 1024
	depends on RAMLOG_SYSLOG || RAMLOG_CONSOLE
	---help---
		Size of the console RAM log.  Default: 1024

config RAMLOG_CRLF
	bool "RAMLOG CR/LF"
	default n
	---help---
		Pre-pend a carriage return before every linefeed that goes into the RAM log.

config RAMLOG_NONBLOCKING
	bool "RAMLOG non-block reads"
	default y
	---help---
		Reading from the RAMLOG will never block if the RAMLOG is empty.  If the RAMLOG
		is empty, then zero is returned (usually interpreted as end-of-file).

config RAMLOG_NPOLLWAITERS
	int "RAMLOG number of poll waiters"
	default 4
	depends on !DISABLE_POLL
	---help---
		The maximum number of threads that may be waiting on the poll method.

endif

config DRIVER_NOTE
	bool "Scheduler instrumentation driver"
	default n
	depends on SCHED_INSTRUMENTATION_BUFFER
	---help---
		Enable building a serial driver that can be used by an application
		to read data from the in-memory, scheduler instrumentatin "note"
		buffer.

config SYSLOG_INTBUFFER
	bool "Use interrupt buffer"
	default n
	---help---
		Enables an interrupt buffer that will be used to serialize debug
		output from interrupt handlers.

config SYSLOG_INTBUFSIZE
	int "Interrupt buffer size"
	default 512
	depends on SYSLOG_INTBUFFER
	---help---
		The size of the interrupt buffer in bytes.

config SYSLOG
	bool "Advanced SYSLOG features"
	default n
	---help---
		Enables generic system logging features.  NOTE: This setting is not
		required to enable system logging.  If this feature is not enable
		system logging will still be available and will log to the system
		console (like printf()).  This setting is required to enable
		customization of the basic system logging capability.

config SYSLOG_TIMESTAMP
	bool "Prepend timestamp to syslog message"
	default n
	---help---
		Prepend timestamp to syslog message.

if SYSLOG

config SYSLOG_CHAR
	bool "System log character device support"
	default y
	depends on !ARCH_SYSLOG
	---help---
		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
		file) must exist at this path.  It will by opened by syslog_initialize.

		Do not enable more than one SYSLOG device.

config SYSLOG_DEVPATH
	string "System log device"
	default "/dev/syslog"
	depends on SYSLOG_CHAR
	---help---
		The full path to the system logging device.  For the RAMLOG SYSLOG device,
		this is normally "/dev/ramlog".  For character SYSLOG devices, it should be
		some other existing character device (or file) supported by the configuration
		(such as "/dev/ttyS1")/

endif

config SYSLOG_CONSOLE
	bool "Use SYSLOG for /dev/console"
	default n
	depends on DEV_CONSOLE
	---help---
		Use the syslog logging device as a system console. If this feature is enabled
		(along with DEV_CONSOLE), then all console output will be re-directed to syslog
		output (syslog_putc). This is useful, for example, if the only console is a Telnet
		console.  Then in that case, console output from non-Telnet threads will go to
		the syslog output.
