199 lines
5.7 KiB
Plaintext
199 lines
5.7 KiB
Plaintext
# 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
|
|
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).
|
|
|
|
endmenu
|