| # Kconfig - microkernel 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. |
| # |
| |
| 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 if SYS_CLOCK_EXISTS |
| 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 && KERNEL_EVENT_LOGGER |
| 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_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. |
| |
| endmenu |