menu "Microkernel Options" #The Kconfig symbols for API are hidden symbols. #In the current sate of the system is not possible to remove #API source code without affecting dependencies in the source code. #This symbols will allow to select which APIs we want to include #in the kernel binary from the configuration menu in the near future. config MICROKERNEL_SERVER_STACK_SIZE int prompt "Microkernel server fiber (K_swapper) 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_swapper(). 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 "K_swapper 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_swapper 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_swapper). 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). # NOTE: # All the API_* config options are being introduced to have the capability # to enable or disable all different microkernel APIs and to remove them # from the conpilation set in the future. # Right now, they are hidden options because the source code does not # necessarily support the capability to be eliminated from the compilation # set, since there are some dependencies that might need to be solved. config API_MEMMAP bool default y depends on MICROKERNEL help This option adds the memory map API to the microkernel image. config API_MEMPOOL bool default y depends on MICROKERNEL help This option add the memory pool API to the microkernel image. config API_TASKIRQ bool default y depends on MICROKERNEL help This option add the task irq API to the microkernel image. config MAX_NUM_TASK_IRQS int prompt "Number of task IRQ objects" default 0 depends on MICROKERNEL && API_TASKIRQ 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. config API_DONOTHING bool default y depends on MICROKERNEL help This option add the idle API to the microkernel image. config API_OFFLD2FIBER bool default y depends on MICROKERNEL help This option add the offload to fiber API to the microkernel image. config API_EVENTS bool default y depends on MICROKERNEL help This option add the event mangement API to the microkernel image. config API_MAILBOX bool default y depends on MICROKERNEL help This option add the mailbox API to the microkernel image. config API_MUTEX bool default y depends on MICROKERNEL help This option add the mutex API to the microkernel image. config API_FIFO bool default y depends on MICROKERNEL help This option add the FIFO API to the microkernel image. config API_SEMAPHORES bool default y depends on MICROKERNEL help This option add the semaphores API to the microkernel image. config API_TIMER bool default y depends on MICROKERNEL help This option add the timer API to the microkernel image. menu "Timer API Options" depends on API_TIMER 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 API_CHANNEL bool default y depends on MICROKERNEL help This option add the channel API to the microkernel image. 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 BSP to implement extra power management policies whenever the kernel becomes idle. The kernel informs the BSP of the number of ticks until the next kernel timer expires by calling the BSP function _SysPowerSaveIdle(). 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