symbols CONT%(cn)d_TYPE_LINUX 'Linux Container' CONT%(cn)d_TYPE_BAREMETAL 'Baremetal Container' CONT%(cn)d_TYPE_POSIX 'POSIX Container' CONT%(cn)d_OPT_NAME 'Container Name' CONT%(cn)d_PHYSMEM_REGIONS 'Container %(cn)d Number of Physical Regions' CONT%(cn)d_PHYS0_START 'Container %(cn)d Physical Region 0 Start Address' CONT%(cn)d_PHYS0_END 'Container %(cn)d Physical Region 0 End Address' CONT%(cn)d_PHYS1_START 'Container %(cn)d Physical Region 1 Start Address' CONT%(cn)d_PHYS1_END 'Container %(cn)d Physical Region 1 End Address' CONT%(cn)d_PHYS2_START 'Container %(cn)d Physical Region 2 Start Address' CONT%(cn)d_PHYS2_END 'Container %(cn)d Physical Region 2 End Address' CONT%(cn)d_PHYS3_START 'Container %(cn)d Physical Region 3 Start Address' CONT%(cn)d_PHYS3_END 'Container %(cn)d Physical Region 3 End Address' symbols CONT%(cn)d_VIRTMEM_REGIONS 'Container %(cn)d Number of Virtual Regions' CONT%(cn)d_VIRT0_START 'Container %(cn)d Virtual Region 0 Start Address' CONT%(cn)d_VIRT0_END 'Container %(cn)d Virtual Region 0 End Address' CONT%(cn)d_VIRT1_START 'Container %(cn)d Virtual Region 1 Start Address' CONT%(cn)d_VIRT1_END 'Container %(cn)d Virtual Region 1 End Address' CONT%(cn)d_VIRT2_START 'Container %(cn)d Virtual Region 2 Start Address' CONT%(cn)d_VIRT2_END 'Container %(cn)d Virtual Region 2 End Address' CONT%(cn)d_VIRT3_START 'Container %(cn)d Virtual Region 3 Start Address' CONT%(cn)d_VIRT3_END 'Container %(cn)d Virtual Region 3 End Address' CONT%(cn)d_VIRT4_START 'Container %(cn)d Virtual Region 4 Start Address' CONT%(cn)d_VIRT4_END 'Container %(cn)d Virtual Region 4 End Address' CONT%(cn)d_VIRT5_START 'Container %(cn)d Virtual Region 5 Start Address' CONT%(cn)d_VIRT5_END 'Container %(cn)d Virtual Region 5 End Address' # FIXME: We dont need to pass PAGER_LMA and PAGER_VMA to config.h now # as we are using them just to derive other symbols, in this file only CONT%(cn)d_PAGER_LMA 'Container %(cn)d Pager LMA' CONT%(cn)d_PAGER_VMA 'Container %(cn)d Pager VMA' CONT%(cn)d_PAGER_SHM_START 'Container %(cn)d Shared Mappings Region Start' CONT%(cn)d_PAGER_SHM_END 'Container %(cn)d Shared Mappings Region End' CONT%(cn)d_PAGER_TASK_START 'Container %(cn)d Task Address Space Region Start' CONT%(cn)d_PAGER_TASK_END 'Container %(cn)d Task Address Space Region End' CONT%(cn)d_PAGER_UTCB_START 'Container %(cn)d UTCB Mappings Region Start' CONT%(cn)d_PAGER_UTCB_END 'Container %(cn)d UTCB Mappings Region End' CONT%(cn)d_LINUX_ZRELADDR 'Container %(cn)d Linux ZRELADDR Parameter' CONT%(cn)d_LINUX_PAGE_OFFSET 'Container %(cn)d Linux PAGE_OFFSET Parameter' CONT%(cn)d_LINUX_PHYS_OFFSET 'Container %(cn)d Linux PHYS_OFFSET Parameter' CONT%(cn)d_LINUX_ROOTFS_ADDRESS 'Container %(cn)d Linux ROOTFS Address' default CONT%(cn)d_PAGER_LMA from CONT%(cn)d_PHYS0_START default CONT%(cn)d_PAGER_VMA from CONT%(cn)d_VIRT0_START default CONT%(cn)d_PAGER_SHM_START from 0x40000000 default CONT%(cn)d_PAGER_SHM_END from 0x50000000 default CONT%(cn)d_PAGER_TASK_START from 0x30000000 default CONT%(cn)d_PAGER_TASK_END from 0x40000000 default CONT%(cn)d_PAGER_UTCB_START from 0xf8100000 default CONT%(cn)d_PAGER_UTCB_END from 0xf8200000 default CONT%(cn)d_LINUX_ZRELADDR from (CONT%(cn)d_LINUX_PHYS_OFFSET + 0x8000) default CONT%(cn)d_LINUX_PAGE_OFFSET from CONT%(cn)d_VIRT0_START default CONT%(cn)d_LINUX_PHYS_OFFSET from CONT%(cn)d_PHYS0_START default CONT%(cn)d_LINUX_ROOTFS_ADDRESS from (CONT%(cn)d_LINUX_PHYS_OFFSET + 0x500000) default CONT%(cn)d_VIRTMEM_REGIONS from 1 default CONT%(cn)d_PHYSMEM_REGIONS from 1 # Define limits on virtual and physical memory regions of a _single_ container 0. Too much code! when CONT%(cn)d_VIRTMEM_REGIONS < 2 suppress CONT%(cn)d_VIRT1_START CONT%(cn)d_VIRT1_END when CONT%(cn)d_VIRTMEM_REGIONS < 2 suppress CONT%(cn)d_VIRT2_START CONT%(cn)d_VIRT2_END when CONT%(cn)d_VIRTMEM_REGIONS < 2 suppress CONT%(cn)d_VIRT3_START CONT%(cn)d_VIRT3_END when CONT%(cn)d_VIRTMEM_REGIONS < 2 suppress CONT%(cn)d_VIRT4_START CONT%(cn)d_VIRT4_END when CONT%(cn)d_VIRTMEM_REGIONS < 2 suppress CONT%(cn)d_VIRT5_START CONT%(cn)d_VIRT5_END when CONT%(cn)d_VIRTMEM_REGIONS < 3 suppress CONT%(cn)d_VIRT2_START CONT%(cn)d_VIRT2_END when CONT%(cn)d_VIRTMEM_REGIONS < 3 suppress CONT%(cn)d_VIRT3_START CONT%(cn)d_VIRT3_END when CONT%(cn)d_VIRTMEM_REGIONS < 3 suppress CONT%(cn)d_VIRT4_START CONT%(cn)d_VIRT4_END when CONT%(cn)d_VIRTMEM_REGIONS < 3 suppress CONT%(cn)d_VIRT5_START CONT%(cn)d_VIRT5_END when CONT%(cn)d_VIRTMEM_REGIONS < 4 suppress CONT%(cn)d_VIRT3_START CONT%(cn)d_VIRT3_END when CONT%(cn)d_VIRTMEM_REGIONS < 4 suppress CONT%(cn)d_VIRT4_START CONT%(cn)d_VIRT4_END when CONT%(cn)d_VIRTMEM_REGIONS < 4 suppress CONT%(cn)d_VIRT5_START CONT%(cn)d_VIRT5_END when CONT%(cn)d_VIRTMEM_REGIONS < 5 suppress CONT%(cn)d_VIRT4_START CONT%(cn)d_VIRT4_END when CONT%(cn)d_VIRTMEM_REGIONS < 5 suppress CONT%(cn)d_VIRT5_START CONT%(cn)d_VIRT5_END when CONT%(cn)d_VIRTMEM_REGIONS < 6 suppress CONT%(cn)d_VIRT5_START CONT%(cn)d_VIRT5_END when CONT%(cn)d_PHYSMEM_REGIONS < 2 suppress CONT%(cn)d_PHYS1_START CONT%(cn)d_PHYS1_END when CONT%(cn)d_PHYSMEM_REGIONS < 2 suppress CONT%(cn)d_PHYS2_START CONT%(cn)d_PHYS2_END when CONT%(cn)d_PHYSMEM_REGIONS < 2 suppress CONT%(cn)d_PHYS3_START CONT%(cn)d_PHYS3_END when CONT%(cn)d_PHYSMEM_REGIONS < 3 suppress CONT%(cn)d_PHYS2_START CONT%(cn)d_PHYS2_END when CONT%(cn)d_PHYSMEM_REGIONS < 3 suppress CONT%(cn)d_PHYS3_START CONT%(cn)d_PHYS3_END when CONT%(cn)d_PHYSMEM_REGIONS < 4 suppress CONT%(cn)d_PHYS3_START CONT%(cn)d_PHYS3_END # We assume kernel uses 0x0 - 0x40000 physical RAM. # Physical Regions for containers should start after kernel. require CONT%(cn)d_PHYS0_START >= 0x40000 require CONT%(cn)d_PHYS1_START >= 0x40000 require CONT%(cn)d_PHYS2_START >= 0x40000 require CONT%(cn)d_PHYS3_START >= 0x40000 # TODO: We can add check for end address of physical region to be # less than RAM SIZE, need to find out RAM SIZE? # Rules for Linux kernel parameters require CONT%(cn)d_LINUX_ZRELADDR > CONT%(cn)d_LINUX_PHYS_OFFSET + 0x8000 # TODO: Do we want to check if PAGER_LMA/VMA lies in allocated memory regions default CONT%(cn)d_PHYS0_START from (%(cn)d == 0 ? 0x100000 : (0x100000 + %(cn)d * 0x1000000)) default CONT%(cn)d_PHYS0_END from (CONT%(cn)d_PHYS0_START + 0xD00000) default CONT%(cn)d_PHYS1_START from CONT%(cn)d_PHYS0_END default CONT%(cn)d_PHYS1_END from (CONT%(cn)d_PHYS1_START + 0x100000) default CONT%(cn)d_PHYS2_START from CONT%(cn)d_PHYS1_END default CONT%(cn)d_PHYS2_END from (CONT%(cn)d_PHYS2_START + 0x100000) default CONT%(cn)d_PHYS3_START from CONT%(cn)d_PHYS2_END default CONT%(cn)d_PHYS3_END from (CONT%(cn)d_PHYS3_START + 0x100000) default CONT%(cn)d_VIRT0_START from (%(cn)d == 0 ? 0xa0000000 : (0xa0000000 + %(cn)d * 0x10000000)) default CONT%(cn)d_VIRT0_END from (CONT%(cn)d_VIRT0_START + 0x10000000) default CONT%(cn)d_VIRT1_START from (%(cn)d == 0 ? 0x80000000 : (0x80000000 + %(cn)d * 0x8000000)) default CONT%(cn)d_VIRT1_END from (CONT%(cn)d_VIRT1_START + 0x8000000) default CONT%(cn)d_VIRT2_START from (%(cn)d == 0 ? 0x40000000 : (0x40000000 + %(cn)d * 0x10000000)) default CONT%(cn)d_VIRT2_END from (CONT%(cn)d_VIRT2_START + 0x10000000) default CONT%(cn)d_VIRT3_START from (%(cn)d == 0 ? 0xf8100000 : (0xf8100000 + %(cn)d * 0x100000)) default CONT%(cn)d_VIRT3_END from (CONT%(cn)d_VIRT3_START + 0x100000) default CONT%(cn)d_VIRT4_START from (%(cn)d == 0 ? 0x10000000 : (0x10000000 + %(cn)d * 0x10000000)) default CONT%(cn)d_VIRT4_END from (CONT%(cn)d_VIRT4_START + 0x10000000) default CONT%(cn)d_VIRT5_START from 0xe0000000 default CONT%(cn)d_VIRT5_END from 0xf0000000 default CONT%(cn)d_OPT_NAME from (CONT%(cn)d_TYPE_LINUX==y) ? "linux%(cn)d" : ((CONT%(cn)d_TYPE_BAREMETAL==y) ? "baremetal%(cn)d" : "posix%(cn)d") when CONT%(cn)d_TYPE_LINUX==y suppress cont%(cn)d_default_pager_params unless CONT%(cn)d_TYPE_POSIX==y suppress cont%(cn)d_posix_pager_params unless CONT%(cn)d_TYPE_LINUX==y suppress cont%(cn)d_linux_pager_params unless CONT%(cn)d_TYPE_BAREMETAL==y suppress cont%(cn)d_baremetal_params # derive symbols, for cinfo.c, depending on the type of container selected derive CONT%(cn)d_PAGER_LOAD_ADDR from (CONT%(cn)d_TYPE_LINUX==y) ? CONT%(cn)d_LINUX_PHYS_OFFSET : CONT%(cn)d_PAGER_LMA derive CONT%(cn)d_PAGER_VIRT_ADDR from (CONT%(cn)d_TYPE_LINUX==y) ? CONT%(cn)d_LINUX_PAGE_OFFSET : CONT%(cn)d_PAGER_VMA derive CONT%(cn)d_START_PC_ADDR from (CONT%(cn)d_TYPE_LINUX != y) ? CONT%(cn)d_PAGER_VMA : (CONT%(cn)d_LINUX_PAGE_OFFSET + CONT%(cn)d_LINUX_ZRELADDR - CONT%(cn)d_LINUX_PHYS_OFFSET) symbols cont%(cn)d_menu 'Container %(cn)d Parameters' cont%(cn)d_physmem_list 'Container %(cn)d Physical Memory Regions (Capabilities)' cont%(cn)d_virtmem_list 'Container %(cn)d Virtual Memory Regions (Capabilities)' cont%(cn)d_device_list 'Container %(cn)d Devices (Capabilities)' container%(cn)d_type 'Container %(cn)d Type' container%(cn)d_options 'Container %(cn)d Options' cont%(cn)d_linux_pager_params 'Container %(cn)d Linux Pager Parameters' cont%(cn)d_default_pager_params 'Container %(cn)d Default Pager Parameters' cont%(cn)d_posix_pager_params 'Container %(cn)d POSIX Pager Parameters' cont%(cn)d_baremetal_params 'Baremetal Project' CONT%(cn)d_BAREMETAL_PROJ0 'Empty Project' CONT%(cn)d_BAREMETAL_PROJ1 'Hello World' CONT%(cn)d_BAREMETAL_PROJ2 'Thread Library Demo' CONT%(cn)d_BAREMETAL_PROJ3 'Test Project' CONT%(cn)d_BAREMETAL_PROJ4 'UART Service' CONT%(cn)d_BAREMETAL_PROJ5 'Timer Service' choices cont%(cn)d_baremetal_params CONT%(cn)d_BAREMETAL_PROJ0 CONT%(cn)d_BAREMETAL_PROJ1 CONT%(cn)d_BAREMETAL_PROJ2 CONT%(cn)d_BAREMETAL_PROJ3 CONT%(cn)d_BAREMETAL_PROJ4 CONT%(cn)d_BAREMETAL_PROJ5 default CONT%(cn)d_BAREMETAL_PROJ0 menu cont%(cn)d_default_pager_params CONT%(cn)d_PAGER_LMA@ CONT%(cn)d_PAGER_VMA@ menu cont%(cn)d_posix_pager_params CONT%(cn)d_PAGER_SHM_START@ CONT%(cn)d_PAGER_SHM_END@ CONT%(cn)d_PAGER_TASK_START@ CONT%(cn)d_PAGER_TASK_END@ CONT%(cn)d_PAGER_UTCB_START@ CONT%(cn)d_PAGER_UTCB_END@ menu cont%(cn)d_linux_pager_params CONT%(cn)d_LINUX_PHYS_OFFSET@ CONT%(cn)d_LINUX_ZRELADDR@ CONT%(cn)d_LINUX_ROOTFS_ADDRESS@ CONT%(cn)d_LINUX_PAGE_OFFSET@ menu cont%(cn)d_virtmem_list CONT%(cn)d_VIRTMEM_REGIONS% CONT%(cn)d_VIRT0_START@ CONT%(cn)d_VIRT0_END@ CONT%(cn)d_VIRT1_START@ CONT%(cn)d_VIRT1_END@ CONT%(cn)d_VIRT2_START@ CONT%(cn)d_VIRT2_END@ CONT%(cn)d_VIRT3_START@ CONT%(cn)d_VIRT3_END@ CONT%(cn)d_VIRT4_START@ CONT%(cn)d_VIRT4_END@ CONT%(cn)d_VIRT5_START@ CONT%(cn)d_VIRT5_END@ menu cont%(cn)d_physmem_list CONT%(cn)d_PHYSMEM_REGIONS% CONT%(cn)d_PHYS0_START@ CONT%(cn)d_PHYS0_END@ CONT%(cn)d_PHYS1_START@ CONT%(cn)d_PHYS1_END@ CONT%(cn)d_PHYS2_START@ CONT%(cn)d_PHYS2_END@ CONT%(cn)d_PHYS3_START@ CONT%(cn)d_PHYS3_END@ # # Device menu and options per container # # FIXME: All this is to be moved to a per-platform description file. # symbols cont%(cn)d_cap_device_uart1 'Container %(cn)d UART1 Menu' cont%(cn)d_cap_device_uart2 'Container %(cn)d UART2 Menu' cont%(cn)d_cap_device_uart3 'Container %(cn)d UART3 Menu' cont%(cn)d_cap_device_timer1 'Container %(cn)d TIMER23 Menu' CONT%(cn)d_CAP_DEVICE_UART1_USE 'Container %(cn)d UART1 Enable' CONT%(cn)d_CAP_DEVICE_UART2_USE 'Container %(cn)d UART2 Enable' CONT%(cn)d_CAP_DEVICE_UART3_USE 'Container %(cn)d UART3 Enable' CONT%(cn)d_CAP_DEVICE_TIMER1_USE 'Container %(cn)d TIMER23 Enable' default CONT%(cn)d_CAP_DEVICE_UART1_USE from n default CONT%(cn)d_CAP_DEVICE_UART2_USE from n default CONT%(cn)d_CAP_DEVICE_UART3_USE from n default CONT%(cn)d_CAP_DEVICE_TIMER1_USE from n menu cont%(cn)d_cap_device_uart1 CONT%(cn)d_CAP_DEVICE_UART1_USE menu cont%(cn)d_cap_device_uart2 CONT%(cn)d_CAP_DEVICE_UART2_USE menu cont%(cn)d_cap_device_uart3 CONT%(cn)d_CAP_DEVICE_UART3_USE menu cont%(cn)d_cap_device_timer1 CONT%(cn)d_CAP_DEVICE_TIMER1_USE menu cont%(cn)d_device_list cont%(cn)d_cap_device_uart1 cont%(cn)d_cap_device_uart2 cont%(cn)d_cap_device_uart3 cont%(cn)d_cap_device_timer1 # # Settings for Custom Capabilities # choices cont%(cn)d_cap_custom0_type CONT%(cn)d_CAP_CUSTOM0_IPC_TYPE CONT%(cn)d_CAP_CUSTOM0_TCTRL_TYPE CONT%(cn)d_CAP_CUSTOM0_EXREGS_TYPE CONT%(cn)d_CAP_CUSTOM0_CAPCTRL_TYPE default CONT%(cn)d_CAP_CUSTOM0_IPC_TYPE choices cont%(cn)d_cap_custom1_type CONT%(cn)d_CAP_CUSTOM1_IPC_TYPE CONT%(cn)d_CAP_CUSTOM1_TCTRL_TYPE CONT%(cn)d_CAP_CUSTOM1_EXREGS_TYPE CONT%(cn)d_CAP_CUSTOM1_CAPCTRL_TYPE default CONT%(cn)d_CAP_CUSTOM1_IPC_TYPE choices cont%(cn)d_cap_custom2_type CONT%(cn)d_CAP_CUSTOM2_IPC_TYPE CONT%(cn)d_CAP_CUSTOM2_TCTRL_TYPE CONT%(cn)d_CAP_CUSTOM2_EXREGS_TYPE CONT%(cn)d_CAP_CUSTOM2_CAPCTRL_TYPE default CONT%(cn)d_CAP_CUSTOM2_IPC_TYPE choices cont%(cn)d_cap_custom3_type CONT%(cn)d_CAP_CUSTOM3_IPC_TYPE CONT%(cn)d_CAP_CUSTOM3_TCTRL_TYPE CONT%(cn)d_CAP_CUSTOM3_EXREGS_TYPE CONT%(cn)d_CAP_CUSTOM3_CAPCTRL_TYPE default CONT%(cn)d_CAP_CUSTOM3_IPC_TYPE default CONT%(cn)d_CAP_CUSTOM0_USE from n default CONT%(cn)d_CAP_CUSTOM1_USE from n default CONT%(cn)d_CAP_CUSTOM2_USE from n default CONT%(cn)d_CAP_CUSTOM3_USE from n menu cont%(cn)d_cap_custom0 CONT%(cn)d_CAP_CUSTOM0_USE cont%(cn)d_cap_custom0_type CONT%(cn)d_CAP_CUSTOM0_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_CUSTOM0_TARGET_CURRENT_PAGER_SPACE CONT%(cn)d_CAP_CUSTOM0_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_CUSTOM0_TARGET_ANOTHER_PAGER CONT%(cn)d_CAP_CUSTOM0_TARGET% menu cont%(cn)d_cap_custom1 CONT%(cn)d_CAP_CUSTOM1_USE cont%(cn)d_cap_custom1_type CONT%(cn)d_CAP_CUSTOM1_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_CUSTOM1_TARGET_CURRENT_PAGER_SPACE CONT%(cn)d_CAP_CUSTOM1_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_CUSTOM1_TARGET_ANOTHER_PAGER CONT%(cn)d_CAP_CUSTOM1_TARGET% menu cont%(cn)d_cap_custom2 CONT%(cn)d_CAP_CUSTOM2_USE cont%(cn)d_cap_custom2_type CONT%(cn)d_CAP_CUSTOM2_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_CUSTOM2_TARGET_CURRENT_PAGER_SPACE CONT%(cn)d_CAP_CUSTOM2_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_CUSTOM2_TARGET_ANOTHER_PAGER CONT%(cn)d_CAP_CUSTOM2_TARGET% menu cont%(cn)d_cap_custom3 CONT%(cn)d_CAP_CUSTOM3_USE cont%(cn)d_cap_custom3_type CONT%(cn)d_CAP_CUSTOM3_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_CUSTOM3_TARGET_CURRENT_PAGER_SPACE CONT%(cn)d_CAP_CUSTOM3_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_CUSTOM3_TARGET_ANOTHER_PAGER CONT%(cn)d_CAP_CUSTOM3_TARGET% choicegroup CONT%(cn)d_CAP_CUSTOM0_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_CUSTOM0_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_CUSTOM0_TARGET_CURRENT_PAGER_SPACE CONT%(cn)d_CAP_CUSTOM0_TARGET_ANOTHER_PAGER default CONT%(cn)d_CAP_CUSTOM0_TARGET_CURRENT_CONTAINER from y choicegroup CONT%(cn)d_CAP_CUSTOM1_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_CUSTOM1_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_CUSTOM1_TARGET_CURRENT_PAGER_SPACE CONT%(cn)d_CAP_CUSTOM1_TARGET_ANOTHER_PAGER default CONT%(cn)d_CAP_CUSTOM1_TARGET_CURRENT_CONTAINER from y choicegroup CONT%(cn)d_CAP_CUSTOM2_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_CUSTOM2_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_CUSTOM2_TARGET_CURRENT_PAGER_SPACE CONT%(cn)d_CAP_CUSTOM2_TARGET_ANOTHER_PAGER default CONT%(cn)d_CAP_CUSTOM2_TARGET_CURRENT_CONTAINER from y choicegroup CONT%(cn)d_CAP_CUSTOM3_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_CUSTOM3_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_CUSTOM3_TARGET_CURRENT_PAGER_SPACE CONT%(cn)d_CAP_CUSTOM3_TARGET_ANOTHER_PAGER default CONT%(cn)d_CAP_CUSTOM3_TARGET_CURRENT_CONTAINER from y when CONT%(cn)d_CAP_CUSTOM0_USE == n suppress cont%(cn)d_cap_custom0_type CONT%(cn)d_CAP_CUSTOM0_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_CUSTOM0_TARGET_CURRENT_PAGER_SPACE CONT%(cn)d_CAP_CUSTOM0_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_CUSTOM0_TARGET_ANOTHER_PAGER CONT%(cn)d_CAP_CUSTOM0_TARGET when CONT%(cn)d_CAP_CUSTOM1_USE == n suppress cont%(cn)d_cap_custom1_type CONT%(cn)d_CAP_CUSTOM1_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_CUSTOM1_TARGET_CURRENT_PAGER_SPACE CONT%(cn)d_CAP_CUSTOM1_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_CUSTOM1_TARGET_ANOTHER_PAGER CONT%(cn)d_CAP_CUSTOM1_TARGET when CONT%(cn)d_CAP_CUSTOM2_USE == n suppress cont%(cn)d_cap_custom2_type CONT%(cn)d_CAP_CUSTOM2_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_CUSTOM2_TARGET_CURRENT_PAGER_SPACE CONT%(cn)d_CAP_CUSTOM2_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_CUSTOM2_TARGET_ANOTHER_PAGER CONT%(cn)d_CAP_CUSTOM2_TARGET when CONT%(cn)d_CAP_CUSTOM3_USE == n suppress cont%(cn)d_cap_custom3_type CONT%(cn)d_CAP_CUSTOM3_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_CUSTOM3_TARGET_CURRENT_PAGER_SPACE CONT%(cn)d_CAP_CUSTOM3_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_CUSTOM3_TARGET_ANOTHER_PAGER CONT%(cn)d_CAP_CUSTOM3_TARGET when CONT%(cn)d_CAP_CUSTOM0_IPC_TYPE == n suppress CONT%(cn)d_CAP_CUSTOM0_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_CUSTOM0_TARGET_ANOTHER_PAGER CONT%(cn)d_CAP_CUSTOM0_TARGET when CONT%(cn)d_CAP_CUSTOM0_TARGET_CURRENT_CONTAINER or CONT%(cn)d_CAP_CUSTOM0_TARGET_CURRENT_PAGER_SPACE suppress CONT%(cn)d_CAP_CUSTOM0_TARGET when CONT%(cn)d_CAP_CUSTOM1_IPC_TYPE == n suppress CONT%(cn)d_CAP_CUSTOM1_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_CUSTOM1_TARGET_ANOTHER_PAGER CONT%(cn)d_CAP_CUSTOM1_TARGET when CONT%(cn)d_CAP_CUSTOM1_TARGET_CURRENT_CONTAINER or CONT%(cn)d_CAP_CUSTOM1_TARGET_CURRENT_PAGER_SPACE suppress CONT%(cn)d_CAP_CUSTOM1_TARGET when CONT%(cn)d_CAP_CUSTOM2_IPC_TYPE == n suppress CONT%(cn)d_CAP_CUSTOM2_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_CUSTOM2_TARGET_ANOTHER_PAGER CONT%(cn)d_CAP_CUSTOM2_TARGET when CONT%(cn)d_CAP_CUSTOM2_TARGET_CURRENT_CONTAINER or CONT%(cn)d_CAP_CUSTOM2_TARGET_CURRENT_PAGER_SPACE suppress CONT%(cn)d_CAP_CUSTOM2_TARGET when CONT%(cn)d_CAP_CUSTOM3_IPC_TYPE == n suppress CONT%(cn)d_CAP_CUSTOM3_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_CUSTOM3_TARGET_ANOTHER_PAGER CONT%(cn)d_CAP_CUSTOM3_TARGET when CONT%(cn)d_CAP_CUSTOM3_TARGET_CURRENT_CONTAINER or CONT%(cn)d_CAP_CUSTOM3_TARGET_CURRENT_PAGER_SPACE suppress CONT%(cn)d_CAP_CUSTOM3_TARGET default CONT%(cn)d_CAP_CUSTOM0_TARGET from 0 default CONT%(cn)d_CAP_CUSTOM1_TARGET from 0 default CONT%(cn)d_CAP_CUSTOM2_TARGET from 0 default CONT%(cn)d_CAP_CUSTOM3_TARGET from 0 # Symbols for Custom Capabilities symbols CONT%(cn)d_CAP_CUSTOM0_USE 'Enable this Capability' cont%(cn)d_cap_custom0_type 'Capability Operation Type' CONT%(cn)d_CAP_CUSTOM0_IPC_TYPE 'IPC Capability' CONT%(cn)d_CAP_CUSTOM0_TCTRL_TYPE 'Thread Control Capability' CONT%(cn)d_CAP_CUSTOM0_EXREGS_TYPE 'Exchange Registers Capability' CONT%(cn)d_CAP_CUSTOM0_CAPCTRL_TYPE 'Capability Control Capability' CONT%(cn)d_CAP_CUSTOM0_TARGET_CURRENT_CONTAINER 'Capability Targets Current Container' CONT%(cn)d_CAP_CUSTOM0_TARGET_CURRENT_PAGER_SPACE 'Capability Targets Current Pager`s Space' CONT%(cn)d_CAP_CUSTOM0_TARGET_ANOTHER_CONTAINER 'Capability Targets Another Container' CONT%(cn)d_CAP_CUSTOM0_TARGET_ANOTHER_PAGER 'Capability Targets Another Container`s Pager' CONT%(cn)d_CAP_CUSTOM0_TARGET 'Enter Container ID' CONT%(cn)d_CAP_CUSTOM1_USE 'Enable this Capability' cont%(cn)d_cap_custom1_type 'Capability Operation Type' CONT%(cn)d_CAP_CUSTOM1_IPC_TYPE 'IPC Capability' CONT%(cn)d_CAP_CUSTOM1_TCTRL_TYPE 'Thread Control Capability' CONT%(cn)d_CAP_CUSTOM1_EXREGS_TYPE 'Exchange Registers Capability' CONT%(cn)d_CAP_CUSTOM1_CAPCTRL_TYPE 'Capability Control Capability' CONT%(cn)d_CAP_CUSTOM1_TARGET_CURRENT_CONTAINER 'Capability Targets Current Container' CONT%(cn)d_CAP_CUSTOM1_TARGET_CURRENT_PAGER_SPACE 'Capability Targets Current Pager`s Space' CONT%(cn)d_CAP_CUSTOM1_TARGET_ANOTHER_CONTAINER 'Capability Targets Another Container' CONT%(cn)d_CAP_CUSTOM1_TARGET_ANOTHER_PAGER 'Capability Targets Another Container`s Pager' CONT%(cn)d_CAP_CUSTOM1_TARGET 'Enter Container ID' CONT%(cn)d_CAP_CUSTOM2_USE 'Enable this Capability' cont%(cn)d_cap_custom2_type 'Capability Operation Type' CONT%(cn)d_CAP_CUSTOM2_IPC_TYPE 'IPC Capability' CONT%(cn)d_CAP_CUSTOM2_TCTRL_TYPE 'Thread Control Capability' CONT%(cn)d_CAP_CUSTOM2_EXREGS_TYPE 'Exchange Registers Capability' CONT%(cn)d_CAP_CUSTOM2_CAPCTRL_TYPE 'Capability Control Capability' CONT%(cn)d_CAP_CUSTOM2_TARGET_CURRENT_CONTAINER 'Capability Targets Current Container' CONT%(cn)d_CAP_CUSTOM2_TARGET_CURRENT_PAGER_SPACE 'Capability Targets Current Pager`s Space' CONT%(cn)d_CAP_CUSTOM2_TARGET_ANOTHER_CONTAINER 'Capability Targets Another Container' CONT%(cn)d_CAP_CUSTOM2_TARGET_ANOTHER_PAGER 'Capability Targets Another Container`s Pager' CONT%(cn)d_CAP_CUSTOM2_TARGET 'Enter Container ID' CONT%(cn)d_CAP_CUSTOM3_USE 'Enable this Capability' cont%(cn)d_cap_custom3_type 'Capability Operation Type' CONT%(cn)d_CAP_CUSTOM3_IPC_TYPE 'IPC Capability' CONT%(cn)d_CAP_CUSTOM3_TCTRL_TYPE 'Thread Control Capability' CONT%(cn)d_CAP_CUSTOM3_EXREGS_TYPE 'Exchange Registers Capability' CONT%(cn)d_CAP_CUSTOM3_CAPCTRL_TYPE 'Capability Control Capability' CONT%(cn)d_CAP_CUSTOM3_TARGET_CURRENT_CONTAINER 'Capability Targets Current Container' CONT%(cn)d_CAP_CUSTOM3_TARGET_CURRENT_PAGER_SPACE 'Capability Targets Current Pager`s Space' CONT%(cn)d_CAP_CUSTOM3_TARGET_ANOTHER_CONTAINER 'Capability Targets Another Container' CONT%(cn)d_CAP_CUSTOM3_TARGET_ANOTHER_PAGER 'Capability Targets Another Container`s Pager' CONT%(cn)d_CAP_CUSTOM3_TARGET 'Enter Container ID' # Symbols for Generic Capabilities symbols CONT%(cn)d_CAP_TCTRL_USE 'Enable this Capability' CONT%(cn)d_CAP_TCTRL_TARGET_CURRENT_CONTAINER 'Capability Targets Current Container' CONT%(cn)d_CAP_TCTRL_TARGET_CURRENT_PAGER_SPACE 'Capability Targets Current Pager`s Space' CONT%(cn)d_CAP_EXREGS_USE 'Enable this Capability' CONT%(cn)d_CAP_EXREGS_TARGET_CURRENT_CONTAINER 'Capability Targets Current Container' CONT%(cn)d_CAP_EXREGS_TARGET_CURRENT_PAGER_SPACE 'Capability Targets Current Pager`s Space' CONT%(cn)d_CAP_IPC_USE 'Enable this Capability' CONT%(cn)d_CAP_IPC_TARGET_CURRENT_CONTAINER 'Capability Targets Current Container' CONT%(cn)d_CAP_IPC_TARGET_CURRENT_PAGER_SPACE 'Capability Targets Current Pager`s Space' CONT%(cn)d_CAP_IPC_TARGET_ANOTHER_CONTAINER 'Capability Targets Another Container' CONT%(cn)d_CAP_IPC_TARGET_ANOTHER_PAGER 'Capability Targets Another Container`s Pager' CONT%(cn)d_CAP_IPC_TARGET 'Enter Container ID' CONT%(cn)d_CAP_CAPCTRL_USE 'Enable this Capability' CONT%(cn)d_CAP_CAPCTRL_TARGET_CURRENT_CONTAINER 'Capability Targets Current Container' CONT%(cn)d_CAP_CAPCTRL_TARGET_CURRENT_PAGER_SPACE 'Capability Targets Current Pager`s Space' CONT%(cn)d_CAP_UMUTEX_USE 'Enable this Capability' CONT%(cn)d_CAP_UMUTEX_TARGET_CURRENT_CONTAINER 'Capability Targets Current Container' CONT%(cn)d_CAP_UMUTEX_TARGET_CURRENT_PAGER_SPACE 'Capability Targets Current Pager`s Space' symbols CONT%(cn)d_CAP_THREADPOOL_SIZE 'Number of Threads' CONT%(cn)d_CAP_SPACEPOOL_SIZE 'Number of Address Spaces' CONT%(cn)d_CAP_MAPPOOL_SIZE 'Number of PMD Mappings (E.g. Middle-level Page Tables)' CONT%(cn)d_CAP_MUTEXPOOL_SIZE 'Number of Userspace Mutexes' CONT%(cn)d_CAP_CAPPOOL_SIZE 'Number of Capabilities (Created at run-time via Split, Replicate)' CONT%(cn)d_CAP_THREADPOOL_USE 'Enable this Capability' CONT%(cn)d_CAP_SPACEPOOL_USE 'Enable this Capability' CONT%(cn)d_CAP_MAPPOOL_USE 'Enable this Capability' CONT%(cn)d_CAP_MUTEXPOOL_USE 'Enable this Capability' CONT%(cn)d_CAP_CAPPOOL_USE 'Enable this Capability' cont%(cn)d_cap_threadpool 'Container %(cn)d Thread Pool Capability' cont%(cn)d_cap_spacepool 'Container %(cn)d Space Pool Capability' cont%(cn)d_cap_mutexpool 'Container %(cn)d Mutex Pool Capability' cont%(cn)d_cap_mappool 'Container %(cn)d Map Pool Capability' cont%(cn)d_cap_cappool 'Container %(cn)d Capability Pool Capability' cont%(cn)d_cap_tctrl 'Container %(cn)d Thread Control Capability' cont%(cn)d_cap_exregs 'Container %(cn)d Exchange Registers Capability' cont%(cn)d_cap_ipc 'Container %(cn)d IPC Capability' cont%(cn)d_cap_capctrl 'Container %(cn)d Capability Control Capability' cont%(cn)d_cap_umutex 'Container %(cn)d Userspace Mutex Control Capability' cont%(cn)d_cap_custom0 'Container %(cn)d Custom Capability 0 Parameters' cont%(cn)d_cap_custom1 'Container %(cn)d Custom Capability 1 Parameters' cont%(cn)d_cap_custom2 'Container %(cn)d Custom Capability 2 Parameters' cont%(cn)d_cap_custom3 'Container %(cn)d Custom Capability 3 Parameters' cont%(cn)d_capability_list 'Container %(cn)d Capability List' default CONT%(cn)d_CAP_THREADPOOL_SIZE from 64 default CONT%(cn)d_CAP_SPACEPOOL_SIZE from 64 default CONT%(cn)d_CAP_MAPPOOL_SIZE from 800 default CONT%(cn)d_CAP_MUTEXPOOL_SIZE from 100 default CONT%(cn)d_CAP_CAPPOOL_SIZE from 32 default CONT%(cn)d_CAP_THREADPOOL_USE from y default CONT%(cn)d_CAP_SPACEPOOL_USE from y default CONT%(cn)d_CAP_MAPPOOL_USE from y default CONT%(cn)d_CAP_MUTEXPOOL_USE from y default CONT%(cn)d_CAP_CAPPOOL_USE from y # Use Rules for Generic Capabilities when CONT%(cn)d_CAP_THREADPOOL_USE == n suppress CONT%(cn)d_CAP_THREADPOOL_SIZE when CONT%(cn)d_CAP_SPACEPOOL_USE == n suppress CONT%(cn)d_CAP_SPACEPOOL_SIZE when CONT%(cn)d_CAP_MAPPOOL_USE == n suppress CONT%(cn)d_CAP_MAPPOOL_SIZE when CONT%(cn)d_CAP_MUTEXPOOL_USE == n suppress CONT%(cn)d_CAP_MUTEXPOOL_SIZE when CONT%(cn)d_CAP_CAPPOOL_USE == n suppress CONT%(cn)d_CAP_CAPPOOL_SIZE when CONT%(cn)d_CAP_IPC_USE == n suppress CONT%(cn)d_CAP_IPC_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_IPC_TARGET_CURRENT_PAGER_SPACE CONT%(cn)d_CAP_IPC_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_IPC_TARGET_ANOTHER_PAGER when CONT%(cn)d_CAP_EXREGS_USE == n suppress CONT%(cn)d_CAP_EXREGS_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_EXREGS_TARGET_CURRENT_PAGER_SPACE when CONT%(cn)d_CAP_TCTRL_USE == n suppress CONT%(cn)d_CAP_TCTRL_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_TCTRL_TARGET_CURRENT_PAGER_SPACE when CONT%(cn)d_CAP_CAPCTRL_USE == n suppress CONT%(cn)d_CAP_CAPCTRL_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_CAPCTRL_TARGET_CURRENT_PAGER_SPACE when CONT%(cn)d_CAP_UMUTEX_USE == n suppress CONT%(cn)d_CAP_UMUTEX_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_UMUTEX_TARGET_CURRENT_PAGER_SPACE when CONT%(cn)d_CAP_IPC_TARGET_CURRENT_CONTAINER or CONT%(cn)d_CAP_IPC_TARGET_CURRENT_PAGER_SPACE suppress CONT%(cn)d_CAP_IPC_TARGET choicegroup CONT%(cn)d_CAP_IPC_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_IPC_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_IPC_TARGET_CURRENT_PAGER_SPACE CONT%(cn)d_CAP_IPC_TARGET_ANOTHER_PAGER default CONT%(cn)d_CAP_IPC_TARGET_CURRENT_CONTAINER from y choicegroup CONT%(cn)d_CAP_EXREGS_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_EXREGS_TARGET_CURRENT_PAGER_SPACE default CONT%(cn)d_CAP_EXREGS_TARGET_CURRENT_CONTAINER from y choicegroup CONT%(cn)d_CAP_TCTRL_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_TCTRL_TARGET_CURRENT_PAGER_SPACE default CONT%(cn)d_CAP_TCTRL_TARGET_CURRENT_CONTAINER from y choicegroup CONT%(cn)d_CAP_CAPCTRL_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_CAPCTRL_TARGET_CURRENT_PAGER_SPACE default CONT%(cn)d_CAP_CAPCTRL_TARGET_CURRENT_CONTAINER from y choicegroup CONT%(cn)d_CAP_UMUTEX_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_UMUTEX_TARGET_CURRENT_PAGER_SPACE default CONT%(cn)d_CAP_UMUTEX_TARGET_CURRENT_CONTAINER from y default CONT%(cn)d_CAP_TCTRL_USE from y default CONT%(cn)d_CAP_EXREGS_USE from y default CONT%(cn)d_CAP_IPC_USE from y default CONT%(cn)d_CAP_CAPCTRL_USE from y default CONT%(cn)d_CAP_UMUTEX_USE from y default CONT%(cn)d_CAP_IPC_TARGET from 0 # Capability Menus menu cont%(cn)d_cap_tctrl CONT%(cn)d_CAP_TCTRL_USE CONT%(cn)d_CAP_TCTRL_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_TCTRL_TARGET_CURRENT_PAGER_SPACE menu cont%(cn)d_cap_exregs CONT%(cn)d_CAP_EXREGS_USE CONT%(cn)d_CAP_EXREGS_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_EXREGS_TARGET_CURRENT_PAGER_SPACE menu cont%(cn)d_cap_capctrl CONT%(cn)d_CAP_CAPCTRL_USE CONT%(cn)d_CAP_CAPCTRL_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_CAPCTRL_TARGET_CURRENT_PAGER_SPACE menu cont%(cn)d_cap_umutex CONT%(cn)d_CAP_UMUTEX_USE CONT%(cn)d_CAP_UMUTEX_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_UMUTEX_TARGET_CURRENT_PAGER_SPACE menu cont%(cn)d_cap_ipc CONT%(cn)d_CAP_IPC_USE CONT%(cn)d_CAP_IPC_TARGET_CURRENT_CONTAINER CONT%(cn)d_CAP_IPC_TARGET_CURRENT_PAGER_SPACE CONT%(cn)d_CAP_IPC_TARGET_ANOTHER_CONTAINER CONT%(cn)d_CAP_IPC_TARGET_ANOTHER_PAGER CONT%(cn)d_CAP_IPC_TARGET% menu cont%(cn)d_cap_threadpool CONT%(cn)d_CAP_THREADPOOL_USE CONT%(cn)d_CAP_THREADPOOL_SIZE% menu cont%(cn)d_cap_spacepool CONT%(cn)d_CAP_SPACEPOOL_USE CONT%(cn)d_CAP_SPACEPOOL_SIZE% menu cont%(cn)d_cap_mappool CONT%(cn)d_CAP_MAPPOOL_USE CONT%(cn)d_CAP_MAPPOOL_SIZE% menu cont%(cn)d_cap_mutexpool CONT%(cn)d_CAP_MUTEXPOOL_USE CONT%(cn)d_CAP_MUTEXPOOL_SIZE% menu cont%(cn)d_cap_cappool CONT%(cn)d_CAP_CAPPOOL_USE CONT%(cn)d_CAP_CAPPOOL_SIZE% menu cont%(cn)d_capability_list cont%(cn)d_cap_threadpool cont%(cn)d_cap_spacepool cont%(cn)d_cap_mutexpool cont%(cn)d_cap_mappool cont%(cn)d_cap_cappool cont%(cn)d_cap_tctrl cont%(cn)d_cap_exregs cont%(cn)d_cap_ipc cont%(cn)d_cap_capctrl cont%(cn)d_cap_umutex cont%(cn)d_cap_custom0 cont%(cn)d_cap_custom1 cont%(cn)d_cap_custom2 cont%(cn)d_cap_custom3 menu container%(cn)d_options CONT%(cn)d_OPT_NAME$ cont%(cn)d_baremetal_params cont%(cn)d_linux_pager_params cont%(cn)d_default_pager_params cont%(cn)d_posix_pager_params cont%(cn)d_physmem_list cont%(cn)d_virtmem_list cont%(cn)d_capability_list cont%(cn)d_device_list choices container%(cn)d_type CONT%(cn)d_TYPE_BAREMETAL CONT%(cn)d_TYPE_POSIX CONT%(cn)d_TYPE_LINUX default CONT%(cn)d_TYPE_BAREMETAL menu cont%(cn)d_menu container%(cn)d_type container%(cn)d_options