| # 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 |