zephyr/kernel/microkernel/Kconfig

235 lines
7.5 KiB
Plaintext

# 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 y
depends on MICROKERNEL && EXPERIMENTAL
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 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