menu "Kernel"
config KERNEL_SMP
    bool "Enable Kernel SMP"
    default n
    help
      This option will enable smp support of LiteOS.

config KERNEL_SMP_CORE_NUM
    int "Muti-processing Core Numbers"
    default 2
    depends on KERNEL_SMP
    help
      This represents the number of muti-processing cores.

config KERNEL_SMP_LOCKDEP
    bool "Enable Spinlock Lockdep Check"
    default n
    depends on KERNEL_SMP
    help
      This option will enable spinlock lockdep check.

config KERNEL_SMP_TASK_SYNC
    bool "Enable Synchronized Task Operations"
    default n
    depends on KERNEL_SMP
    help
      This option will enable task synchronized operate task across cores.

config KERNEL_SCHED_STATISTICS
    bool "Enable Scheduler statistics"
    default n
    depends on KERNEL_SMP
    help
      This option will enable schedulder statistics.

config KERNEL_MMU
    bool "Enable MMU"
    default y
    help
      This option will enable mmu.

config KERNEL_VM
    bool "Enable VM"
    default y
    depends on KERNEL_MMU
    help
      This option will enable vmm, pmm, page fault, etc.

config KERNEL_SYSCALL
    bool "Enable Syscall"
    default y
    depends on KERNEL_VM
    help
      This option will enable syscall.

config KERNEL_EXTKERNEL
    bool "Enable Extend Kernel"
    default y
    help
      This option will enable extend Kernel of LiteOS.  Extend kernel include
      cppsupport, cpup, and dynload. You can select one or some
      of them.

config KERNEL_CPPSUPPORT
    bool "C++ Support"
    default y
    depends on KERNEL_EXTKERNEL
    help
      If you wish to build LiteOS with support for C++.

config KERNEL_CPUP
    bool "Enable Cpup"
    default y
    depends on KERNEL_EXTKERNEL
    help
      If you wish to build LiteOS with support for cpup.

config CPUP_INCLUDE_IRQ
    bool "Enable Cpup include irq"
    default y
    depends on KERNEL_CPUP
    help
      If you wish to include irq usage for cpup.

config KERNEL_DYNLOAD
    bool "Enable Dynamic Load Feature"
    default y
    depends on KERNEL_EXTKERNEL && KERNEL_VM && KERNEL_SYSCALL
    help
      If you wish to build LiteOS with support for dynamic load.

config KERNEL_PM
    bool "Enable Power Management"
    default y
    depends on KERNEL_EXTKERNEL
    help
      If you wish to build LiteOS with support for power management.

config ASLR
    bool "Enable Address Space Layout Randomization"
    default n
    depends on KERNEL_DYNLOAD && HW_RANDOM_ENABLE
    help
      If you wish to enable ASLR for user aspace.

config KERNEL_VDSO
    bool "Enable VDSO Feature"
    default n
    depends on KERNEL_EXTKERNEL && KERNEL_VM && KERNEL_SYSCALL
    help
      If you wish to speed up some system calls.

config KERNEL_HOOK
    bool "Enable Hook Feature"
    default n
    depends on KERNEL_EXTKERNEL && DEBUG_VERSION

config KERNEL_TRACE
    bool "Enable Trace Feature"
    default n
    depends on KERNEL_HOOK

config TRACE_MSG_EXTEND
    bool "Enable Record more extended content"
    default n
    depends on KERNEL_TRACE

config TRACE_FRAME_CORE_MSG
    bool "Record cpuid, hardware interrupt status, task lock status"
    default n
    depends on TRACE_MSG_EXTEND

config TRACE_FRAME_EVENT_COUNT
    bool "Record event count, which indicate the sequence of happend events"
    default n
    depends on TRACE_MSG_EXTEND

config TRACE_FRAME_MAX_PARAMS
    int "Record max params"
    default 3
    depends on KERNEL_TRACE
    help
      Make sure the max value is bigger than the number defined by each #MODULE#_#TYPE#_PARMAS in los_trace.h, e.g. TASK_SWITCH_PARAMS

choice
    prompt "Trace work mode"
    default RECORDER_MODE_OFFLINE
    depends on KERNEL_TRACE

config RECORDER_MODE_ONLINE
    bool "Online mode"
    select TRACE_CLIENT_INTERACT

config RECORDER_MODE_OFFLINE
    bool "Offline mode"

endchoice

config TRACE_BUFFER_SIZE
    int "Trace record buffer size"
    default 10000

config TRACE_CLIENT_INTERACT
    bool "Enable Trace Client Visualization and Control"
    default n
    depends on KERNEL_TRACE

choice
    prompt "Trace Pipeline for Data Transmission"
    depends on TRACE_CLIENT_INTERACT

config TRACE_PIPELINE_SERIAL
    bool "Via Serial"

endchoice

choice
    prompt "Trace Control"
    default TRACE_CONTROL_VIA_SHELL
    depends on TRACE_CLIENT_INTERACT
    help
      If you wish to control Trace's start/stop etc.,dynamically by Trace Client.

config TRACE_CONTROL_VIA_SHELL
    bool "Via Shell"
    select LOSCFG_SHELL

config TRACE_CONTROL_AGENT
    bool "Via Trace Agent Task"

config TRACE_NO_CONTROL
    bool "No Control"

endchoice

config KERNEL_SHM
    bool "Enable Shared Memory"
    default y
    depends on KERNEL_EXTKERNEL && KERNEL_VM && KERNEL_SYSCALL
    help
      Answer Y to enable LiteOS support shared memory.

config KERNEL_LITEIPC
    bool "Enable liteipc"
    default y
    depends on KERNEL_EXTKERNEL && KERNEL_VM
    help
      Answer Y to enable LiteOS support liteipc.

config KERNEL_PIPE
    bool "Enable pipes"
    default y
    depends on KERNEL_EXTKERNEL
    help
      Answer Y to enable LiteOS support pipes.

config BASE_CORE_HILOG
    bool "Enable Hilog"
    default y
    help
      If you wish to include hilog.

endmenu
