# Kconfig - kernel configuration options

#
# Copyright (c) 2014-2015 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

choice
prompt "Kernel Type"
default MICROKERNEL

config NANOKERNEL
	bool "Nano Kernel"

config MICROKERNEL
	bool "Micro Kernel"

endchoice

menu "General Kernel Options"

config SYS_CLOCK_TICKS_PER_SEC
	int
	prompt "System tick frequency (in ticks/second)"
	default 100
	help
	This option specifies the frequency of the system clock in Hz.

config SYS_CLOCK_HW_CYCLES_PER_SEC
	int "System clock's h/w timer frequency"
	help
	This option specifies the frequency of the hardware timer used for the
	system clock (in Hz). This option is set by the platform's Kconfig file
	and the user should generally avoid modifying it via the menu configuration.

config  SYS_CLOCK_EXISTS
	bool
	# omit prompt to signify a "hidden" option
	default y
	default n if (SYS_CLOCK_TICKS_PER_SEC = 0)
	help
	This option specifies that the kernel lacks timer support.

config  INIT_STACKS
	bool
	prompt "Initialize stack areas"
	default n
	help
	This option instructs the kernel to initialize stack areas with a
	known value (0xaa) before they are first used, so that the high
	water mark can be easily determined. This applies to the stack areas
	for both tasks and fibers, as well as for the microkernel server's command
	stack.

config  XIP
	bool
	prompt "Execute in place"
	help
	  This option allows the kernel to operate with its text and read-only
	  sections residing in ROM (or similar read-only memory). Not all platforms
	  support this option so it must be used with care; you must also
	  supply a linker command file when building your image. Enabling this
	  option increases both the code and data footprint of the image.


config RING_BUFFER
	bool
	prompt "Enable ring buffers"
	default n
	help
	Enable usage of ring buffers. Similar to nanokernel FIFOs but manage
	their own buffer memory and can store arbitrary data. For optimal
	performance, use buffer sizes that are a power of 2.

config KERNEL_EVENT_LOGGER
	bool
	prompt "Enable kernel event logger features"
	default n
	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.

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

config  THREAD_MONITOR
	bool
	prompt "Task and fiber monitoring [EXPERIMENTAL]"
	default n
	help
	  This option instructs the kernel to maintain a list of all tasks
	  and fibers (excluding those that have not yet started or have
	  already terminated).

config KERNEL_INIT_PRIORITY_DEFAULT
	int
	prompt "Default init priority"
	default 40
	help
	Defaut minimal init priority for each init level.

config KERNEL_INIT_PRIORITY_DEVICE
	int
	prompt "Default init priority for device drivers"
	default 50
	help
	Device driver, that depends on common components, such as
	interrupt controller, but does not depend on other devices,
	uses this init priority.

menu "Kernel event logging points"
depends on KERNEL_EVENT_LOGGER

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

config KERNEL_EVENT_LOGGER_INTERRUPT
	bool
	prompt "Interrupt event logging point"
	default n
	depends on KERNEL_EVENT_LOGGER
	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 KERNEL_EVENT_LOGGER && ((MICROKERNEL && SYS_POWER_MANAGEMENT) || NANOKERNEL)
	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.
endmenu

menu "Security Options"

config STACK_CANARIES
	bool
	prompt "Compiler stack canaries"
	default n
	help
	This option enables compiler stack canaries support kernel functions.

	If stack canaries are supported by the compiler, it will emit
	extra code that inserts a canary value into the stack frame when
	a function is entered and validates this value upon exit.
	Stack corruption (such as that caused by buffer overflow) results
	in a fatal error condition for the running entity.
	Enabling this option can result in a significant increase
	in footprint and an associated decrease in performance.

	If stack canaries are not supported by the compiler, enabling this
	option has no effect.
endmenu

endmenu

source "kernel/nanokernel/Kconfig"

if MICROKERNEL
source "kernel/microkernel/Kconfig"
endif

menu "Power Management"
config SYS_POWER_MANAGEMENT
	bool
	prompt "Power management"
	default n
	help
	This option enables the platform to implement extra power management
	policies whenever the kernel becomes idle. The kernel informs the
	power management subsystem of the number of ticks until the next kernel
	timer is due to expire.

menu "Power Management Features"
	depends on SYS_POWER_MANAGEMENT

config  SYS_POWER_LOW_POWER_STATE
	bool
	prompt "Low power state"
	default n
	depends on MICROKERNEL && SYS_POWER_MANAGEMENT && SYS_POWER_LOW_POWER_STATE_SUPPORTED
	help
	This option enables the kernel to interface with a power manager
	application.  This permits the system to enter a custom CPU low power
	state when the kernel becomes idle. The low power state could be any of
	the CPU low power states supported by the processor.  Generally the one
	saving most power.

config  SYS_POWER_DEEP_SLEEP
	bool
	prompt "Deep sleep state"
	default n
	depends on MICROKERNEL && SYS_POWER_MANAGEMENT && SYS_POWER_DEEP_SLEEP_SUPPORTED
	help
	This option enables the kernel to interface with a power manager
	application. This permits the system to enter a Deep sleep state
	supported by the SOC where the system clock is turned off while RAM is
	retained. This state would be entered when the kernel becomes idle for
	extended periods and would have a high wake latency.  Resume would be
	from the reset vector same as cold boot. The interface allows
	restoration of states that were saved at the time of suspend.

config DEVICE_POWER_MANAGEMENT
	bool
	prompt "Device power management"
	default n
	depends on MICROKERNEL && SYS_POWER_MANAGEMENT
	help
	This option enables the device power management interface.  The
	interface consists of hook functions implemented by device drivers
	that get called by the power manager application when the system
	is going to suspend state or resuming from suspend state. This allows
	device drivers to do any necessary power management operations
	like turning off device clocks and peripherals. The device drivers
	may also save and restore states in these hook functions.

config TICKLESS_IDLE
	bool
	prompt "Tickless idle"
	default y
	depends on MICROKERNEL || NANOKERNEL_TICKLESS_IDLE_SUPPORTED
	help
	This option suppresses periodic system clock interrupts whenever the
	kernel becomes idle. This permits the system to remain in a power
	saving state for extended periods without having to wake up to
	service each tick as it occurs.

	As a policy, an architecture should always provide support for tickless in
	the microkernel. If an architecture also provides support for nanokernel
	systems, it must select the NANOKERNEL_TICKLESS_IDLE_SUPPORTED kconfig
	option.

config TICKLESS_IDLE_THRESH
	int
	prompt "Tickless idle threshold"
	default 3
	depends on TICKLESS_IDLE
	help
	This option enables clock interrupt suppression when the kernel idles
	for only a short period of time. It specifies the minimum number of
	ticks that must occur before the next kernel timer expires in order
	for suppression to happen.

endmenu

endmenu
