#
# Copyright (c) 2014-2015 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig KERNEL_EVENT_LOGGER
	bool
	prompt "Enable kernel event logger features"
	default n
	select RING_BUFFER
	help
	  This feature enables the usage of the profiling logger. Provides the
	  logging of sleep events (either entering or leaving low power conditions),
	  context switch events, interrupt events, boot events and a method to
	  collect these event messages.

if KERNEL_EVENT_LOGGER
config KERNEL_EVENT_LOGGER_BUFFER_SIZE
	int
	prompt "Kernel event logger buffer size"
	default 128
	help
	  Buffer size in 32-bit words.

config KERNEL_EVENT_LOGGER_DYNAMIC
	bool
	prompt "Kernel event logger dynamic enabling"
	default n
	help
	  If enabled, kernel event logger is not logging any data to the ring buffer
	  It is up to the application to set the appropriate flags to enable/disable the
	  logging of each event type.

config KERNEL_EVENT_LOGGER_CUSTOM_TIMESTAMP
	bool
	prompt "Kernel event logger custom timestamp"
	default n
	help
	  This flag enables the possibility to set the timer function to be used to
	  populate kernel event logger timestamp. This has to be done at runtime by
	  calling sys_k_event_logger_set_timer and providing the function callback.

menu "Kernel event logging points"

config KERNEL_EVENT_LOGGER_CONTEXT_SWITCH
	bool
	prompt "Context switch event logging point"
	default n
	help
	  Enable the context switch event messages.

config KERNEL_EVENT_LOGGER_INTERRUPT
	bool
	prompt "Interrupt event logging point"
	default n
	help
	  Enable interrupt event messages. These messages provide the following
	  information: The time when interrupts occur.

config KERNEL_EVENT_LOGGER_SLEEP
	bool
	prompt "Sleep event logging point"
	default n
	depends on SYS_POWER_MANAGEMENT
	help
	  Enable low power condition event messages. These messages provide the
	  following information:

		- When the CPU went to sleep mode.
		- When the CPU woke up.
		- The ID of the interrupt that woke the CPU up.

config KERNEL_EVENT_LOGGER_THREAD
	bool
	prompt "Thread event logging point"
	default n
	help
	  Enable thread event messages. These messages provide the following
	  information:

		- When threads are marked as ready to be executed.
		- When threads are marked as pending.
		- When threads end.

	  Context switching messages should be enabled by enabling the
	  CONFIG_KERNEL_EVENT_LOGGER_CONTEXT_SWITCH setting instead.

endmenu

endif
