| # Kconfig - kernel configuration options |
| |
| # |
| # Copyright (c) 2014-2015 Wind River Systems, Inc. |
| # |
| # Redistribution and use in source and binary forms, with or without |
| # modification, are permitted provided that the following conditions are met: |
| # |
| # 1) Redistributions of source code must retain the above copyright notice, |
| # this list of conditions and the following disclaimer. |
| # |
| # 2) Redistributions in binary form must reproduce the above copyright notice, |
| # this list of conditions and the following disclaimer in the documentation |
| # and/or other materials provided with the distribution. |
| # |
| # 3) Neither the name of Wind River Systems nor the names of its contributors |
| # may be used to endorse or promote products derived from this software without |
| # specific prior written permission. |
| # |
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
| # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| # POSSIBILITY OF SUCH DAMAGE. |
| # |
| |
| 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 |
| depends on !NO_ISRS |
| 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" |
| default 0 |
| help |
| This option specifies the frequency of the hardware timer used for the |
| system clock (in Hz). It is normally set by the platform's defconfig 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 n if (SYS_CLOCK_TICKS_PER_SEC = 0) |
| default y |
| 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 ENHANCED_SECURITY |
| bool |
| prompt "Enhanced security features" |
| default n |
| help |
| This option enables all security features supported by the kernel, |
| including those that can have a significant impact on system |
| footprint or performance; it also prevents the use of certain kernel |
| features that have known security risks. |
| |
| Users can customize these settings using the CUSTOM_SECURITY option |
| in the "Security Options" menu. |
| |
| 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 EVENT_LOGGER |
| bool |
| prompt "Enable event logger" |
| default n |
| select RING_BUFFER |
| help |
| Enable event logging feature. Allow the usage of a ring buffer to |
| transmit event messages with a single interface to collect them. |
| |
| config KERNEL_PROFILER |
| bool |
| prompt "Enable profiler features" |
| default n |
| select EVENT_LOGGER |
| 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 profile messages. |
| |
| config PROFILER_BUFFER_SIZE |
| int |
| prompt "Profiler buffer size" |
| default 128 |
| depends on KERNEL_PROFILER |
| help |
| Buffer size in 32-bit words. |
| |
| menu "Profiler points" |
| depends on KERNEL_PROFILER |
| |
| config PROFILER_CONTEXT_SWITCH |
| bool |
| prompt "Context switch profiler point" |
| default n |
| depends on KERNEL_PROFILER |
| help |
| Enable the context switch event messages. |
| |
| config PROFILER_INTERRUPT |
| bool |
| prompt "Interrupt profiler point" |
| default n |
| depends on KERNEL_PROFILER |
| help |
| Enable interrupt event messages. These messages provide the following |
| information: The time when interrupts occur. |
| |
| config PROFILER_SLEEP |
| bool |
| prompt "Sleep profiler point" |
| default n |
| depends on KERNEL_PROFILER && ADVANCED_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. |
| endmenu |
| |
| menu "Security Options" |
| depends on ENHANCED_SECURITY |
| |
| config CUSTOM_SECURITY |
| bool |
| prompt "Customized security" |
| default n |
| help |
| This option allow users to disable enhanced security features they do |
| not wish to use or enable the use of features with security exposures. |
| |
| config STACK_CANARIES |
| bool |
| prompt "Compiler stack canaries" if CUSTOM_SECURITY |
| default n |
| help |
| This option enables compiler stack canaries support on most functions |
| in the kernel. (Kernel functions that reside in LKMs do NOT have |
| stack canary support, due to limitations of the LKM technology.) |
| |
| 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" |
| |
| config TICKLESS_IDLE |
| bool |
| prompt "Tickless idle" |
| default y |
| depends on ADVANCED_POWER_MANAGEMENT |
| 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. |
| |
| config TICKLESS_IDLE_THRESH |
| int |
| prompt "Tickless idle threshold" |
| default 3 |
| depends on TICKLESS_IDLE && MICROKERNEL |
| help |
| This option disables 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. |
| |
| if MICROKERNEL |
| source "kernel/microkernel/Kconfig" |
| endif |