| # Kconfig - microkernel 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. |
| # |
| |
| menu "Microkernel Options" |
| |
| config MICROKERNEL_SERVER_STACK_SIZE |
| int |
| prompt "Microkernel server fiber (_k_server) stack size" |
| default 1024 |
| depends on MICROKERNEL |
| help |
| This option specifies the size of the stack used by the microkernel |
| server fiber, whose entry point is _k_server(). This must be able |
| to handle the deepest call stack for internal handling of microkernel |
| |
| config MICROKERNEL_SERVER_PRIORITY |
| int |
| prompt "Priority of the kernel service fiber" |
| default 0 |
| depends on MICROKERNEL |
| help |
| Priority of the microkernel server fiber that performs |
| kernel requests and task scheduling assignments. |
| |
| config PRIORITY_CEILING |
| int |
| prompt "Maximum priority for priority inheritance algorithm" |
| default 0 |
| depends on MICROKERNEL |
| help |
| The highest task priority for the mutex priority inheritance |
| algorithm. |
| A task of low priority holding a mutex will see its priority |
| bumped to the priority of a task trying to acquire the mutex. |
| This option puts an upper boundary to the priority a task may |
| get bumped to. |
| |
| config COMMAND_STACK_SIZE |
| int |
| prompt "Microkernel server command stack size (in packets)" |
| default 64 |
| depends on MICROKERNEL |
| help |
| This option specifies the maximum number of command packets that |
| can be queued up for processing by the kernel's _k_server fiber. |
| |
| config NUM_COMMAND_PACKETS |
| int |
| prompt "Number of command packets" |
| default 16 |
| depends on MICROKERNEL |
| help |
| This option specifies the number of packets in the command packet pool. |
| This pool needs to be large enough to accommodate all in-flight |
| asynchronous command requests as well as those internally issued by |
| the microkernel server fiber (_k_server). |
| |
| config NUM_TIMER_PACKETS |
| int |
| prompt "Number of timer packets" if SYS_CLOCK_EXISTS |
| default 0 if !SYS_CLOCK_EXISTS |
| default 10 |
| depends on MICROKERNEL |
| help |
| This option specifies the number of timer packets to create. Each |
| explicit and implicit timer usage consumes one timer packet. |
| |
| config NUM_TASK_PRIORITIES |
| int |
| prompt "Number of task priorities" |
| default 16 |
| range 1 256 |
| depends on MICROKERNEL |
| help |
| This option specifies the number of task priorities supported by the |
| task scheduler. Specifying "N" provides support for task priorities |
| ranging from 0 (highest) through N-2; task priority N-1 (lowest) is |
| reserved for the kernel's idle task. |
| |
| config WORKLOAD_MONITOR |
| bool |
| prompt "Workload monitoring [EXPERIMENTAL]" |
| default n |
| depends on MICROKERNEL |
| help |
| This option instructs the kernel to record the percentage of time |
| the system is doing useful work (i.e. is not idle). |
| |
| config MAX_NUM_TASK_IRQS |
| int |
| prompt "Number of task IRQ objects" |
| default 0 |
| depends on MICROKERNEL |
| help |
| This option specifies the maximum number of IRQs that may be |
| utilized by task level device drivers. A value of zero disables |
| this feature. |
| |
| menu "Timer API Options" |
| |
| config TIMESLICING |
| bool |
| prompt "Task time slicing" |
| default y |
| depends on MICROKERNEL && SYS_CLOCK_EXISTS |
| help |
| This option enables time slicing between tasks of equal priority. |
| |
| config TIMESLICE_SIZE |
| int |
| prompt "Time slice size (in ticks)" |
| default 0 |
| depends on TIMESLICING |
| help |
| This option specifies the maximum amount of time a task can execute |
| before other tasks of equal priority are given an opportunity to run. |
| A time slice size of zero means "no limit" (i.e. an infinitely large |
| time slice). |
| |
| config TIMESLICE_PRIORITY |
| int |
| prompt "Time slicing task priority threshold" |
| default 0 |
| depends on TIMESLICING |
| help |
| This option specifies the task priority level at which time slicing |
| takes effect; tasks having a higher priority than this threshold |
| are not subject to time slicing. A threshold level of zero means |
| that all tasks are potentially subject to time slicing. |
| endmenu |
| |
| config TASK_MONITOR |
| bool |
| prompt "Task monitoring [EXPERIMENTAL]" |
| default n |
| depends on MICROKERNEL |
| help |
| This option instructs the kernel to record significant task |
| activities. These can include: task switches, task state changes, |
| kernel service requests, and the signalling of events. |
| |
| config TASK_MONITOR_CAPACITY |
| int |
| prompt "Trace buffer capacity (# of entries)" |
| default 300 |
| depends on TASK_MONITOR |
| help |
| This option specifies the number of entries in the task monitor's |
| trace buffer. Each entry requires 12 bytes. |
| |
| config TASK_MONITOR_MASK |
| int |
| prompt "Trace buffer mask" |
| default 15 |
| depends on TASK_MONITOR |
| help |
| This option specifies which task execution activities are captured |
| in the task monitor's trace buffer. The following values can be |
| OR-ed together to form the mask: |
| 1 (MON_TSWAP): task switch |
| 2 (MON_STATE): task state change |
| 4 (MON_KSERV): task execution of kernel APIs |
| 8 (MON_EVENT): task event signalled |
| |
| config OBJECT_MONITOR |
| bool |
| prompt "Kernel object monitoring [EXPERIMENTAL]" |
| default n |
| depends on MICROKERNEL |
| help |
| This option instructs the kernel to record statistics about |
| microkernel object usage. |
| |
| 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 ADVANCED_POWER_MANAGEMENT |
| bool |
| prompt "Advanced power management" |
| default n |
| depends on MICROKERNEL |
| help |
| This option enables the platform to implement extra power management |
| policies whenever the kernel becomes idle. The kernel invokes |
| _sys_power_save_idle() to inform the power management subsystem of the |
| number of ticks until the next kernel timer is due to expire. |
| |
| menu "Advanced Power Management Features" |
| depends on MICROKERNEL && ADVANCED_POWER_MANAGEMENT && ADVANCED_IDLE_SUPPORTED |
| |
| config ADVANCED_IDLE |
| bool |
| prompt "Advanced idle state" |
| default n |
| depends on ADVANCED_POWER_MANAGEMENT && ADVANCED_IDLE_SUPPORTED |
| help |
| This option enables the kernel to interface to a custom advanced idle |
| power saving manager. This permits the system to enter a custom |
| power saving state when the kernel becomes idle for extended periods, |
| and then to restore the system to its previous state (rather than |
| booting up from scratch) when the kernel is re-activated. |
| |
| config ADV_IDLE_STACK_SIZE |
| int |
| prompt "Advanced idle state stack size" |
| default 16 |
| depends on ADVANCED_IDLE |
| help |
| This option defines the size of the separate stack used during the |
| system state check while the booting up. A separate stack is used |
| to avoid memory corruption on the system re-activation from power |
| down mode. The stack size must be large enough to hold the return |
| address (4 bytes) and the _AdvIdleCheckSleep() stack frame. |
| |
| endmenu |
| |
| endmenu |