Boot Linux faster!

Check our new training course

Boot Linux faster!

Check our new training course
and Creative Commons CC-BY-SA
lecture and lab materials

Bootlin logo

Elixir Cross Referencer

# 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