mirror of
https://github.com/drasko/codezero.git
synced 2026-02-27 09:13:13 +01:00
Moved capability struct to api/capability.h for userspace coherence
Userspace often breaks as we change the capability structure. Now structure is under api/ so userspace can also update with changes.
This commit is contained in:
709
config/cml/examples/helloworld/config.cml
Normal file
709
config/cml/examples/helloworld/config.cml
Normal file
@@ -0,0 +1,709 @@
|
|||||||
|
#
|
||||||
|
# Automatically generated, don't edit
|
||||||
|
#
|
||||||
|
# Generated on: bahadir-laptop
|
||||||
|
# At: Sun, 22 Nov 2009 12:50:07 +0000
|
||||||
|
# Linux version 2.6.24-22-generic (buildd@vernadsky) (gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu7)) #1 SMP Mon Nov 24 18:32:42 UTC 2008
|
||||||
|
|
||||||
|
#
|
||||||
|
# Codezero Microkernel Configurator
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Main architecture
|
||||||
|
#
|
||||||
|
CONFIG_ARCH_ARM=y
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# ARM Architecture Configuration
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# ARM Architecture Family
|
||||||
|
#
|
||||||
|
CONFIG_SUBARCH_V5=y
|
||||||
|
CONFIG_SUBARCH_V6=n
|
||||||
|
CONFIG_SUBARCH_V7=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# ARM CPU type
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# ARM Processor Type
|
||||||
|
#
|
||||||
|
CONFIG_CPU_ARM926=y
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# ARM Platform Type
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# ARM Platform Type
|
||||||
|
#
|
||||||
|
CONFIG_PLATFORM_EB=n
|
||||||
|
CONFIG_PLATFORM_AB926=n
|
||||||
|
CONFIG_PLATFORM_PB926=y
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Toolchain Prefix
|
||||||
|
#
|
||||||
|
CONFIG_TOOLCHAIN_KERNEL="arm-none-eabi-"
|
||||||
|
CONFIG_TOOLCHAIN_USER="arm-none-linux-gnueabi-"
|
||||||
|
|
||||||
|
CONFIG_CONTAINERS=4
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container Setup
|
||||||
|
#
|
||||||
|
CONFIG_CAPABILITIES=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Parameters
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Type
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_TYPE_BAREMETAL=y
|
||||||
|
CONFIG_CONT0_TYPE_POSIX=n
|
||||||
|
CONFIG_CONT0_TYPE_CUSTOM=n
|
||||||
|
CONFIG_CONT0_TYPE_LINUX=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Options
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_OPT_NAME="hello0"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Baremetal Project
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_BAREMETAL_PROJ0=n
|
||||||
|
CONFIG_CONT0_BAREMETAL_PROJ1=y
|
||||||
|
CONFIG_CONT0_BAREMETAL_PROJ2=n
|
||||||
|
CONFIG_CONT0_BAREMETAL_PROJ3=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Default Pager Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_PAGER_LMA=0x40000
|
||||||
|
CONFIG_CONT0_PAGER_VMA=0x10000000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Physical Memory Regions (Capabilities)
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_PHYSMEM_REGIONS=1
|
||||||
|
CONFIG_CONT0_PHYS0_START=0x40000
|
||||||
|
CONFIG_CONT0_PHYS0_END=0x100000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Virtual Memory Regions (Capabilities)
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_VIRTMEM_REGIONS=1
|
||||||
|
CONFIG_CONT0_VIRT0_START=0x10000000
|
||||||
|
CONFIG_CONT0_VIRT0_END=0x20000000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Capability List
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Thread Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_CAP_THREADPOOL_USE=y
|
||||||
|
CONFIG_CONT0_CAP_THREADPOOL_SIZE=64
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Space Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_CAP_SPACEPOOL_USE=y
|
||||||
|
CONFIG_CONT0_CAP_SPACEPOOL_SIZE=64
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Mutex Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_CAP_MUTEXPOOL_USE=y
|
||||||
|
CONFIG_CONT0_CAP_MUTEXPOOL_SIZE=100
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Map Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_CAP_MAPPOOL_USE=y
|
||||||
|
CONFIG_CONT0_CAP_MAPPOOL_SIZE=800
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Capability Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_CAP_CAPPOOL_USE=y
|
||||||
|
CONFIG_CONT0_CAP_CAPPOOL_SIZE=32
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Thread Control Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_CAP_TCTRL_USE=y
|
||||||
|
CONFIG_CONT0_CAP_TCTRL_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT0_CAP_TCTRL_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Exchange Registers Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_CAP_EXREGS_USE=y
|
||||||
|
CONFIG_CONT0_CAP_EXREGS_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT0_CAP_EXREGS_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 IPC Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_CAP_IPC_USE=y
|
||||||
|
CONFIG_CONT0_CAP_IPC_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT0_CAP_IPC_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
CONFIG_CONT0_CAP_IPC_TARGET_ANOTHER_CONTAINER=n
|
||||||
|
CONFIG_CONT0_CAP_IPC_TARGET_ANOTHER_PAGER=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Capability Control Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_CAP_CAPCTRL_USE=y
|
||||||
|
CONFIG_CONT0_CAP_CAPCTRL_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT0_CAP_CAPCTRL_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Userspace Mutex Control Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_CAP_UMUTEX_USE=y
|
||||||
|
CONFIG_CONT0_CAP_UMUTEX_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT0_CAP_UMUTEX_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Custom Capability 0 Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_CAP_CUSTOM0_USE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Custom Capability 1 Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_CAP_CUSTOM1_USE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Custom Capability 2 Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_CAP_CUSTOM2_USE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 0 Custom Capability 3 Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT0_CAP_CUSTOM3_USE=n
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Parameters
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Type
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_TYPE_BAREMETAL=y
|
||||||
|
CONFIG_CONT1_TYPE_POSIX=n
|
||||||
|
CONFIG_CONT1_TYPE_CUSTOM=n
|
||||||
|
CONFIG_CONT1_TYPE_LINUX=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Options
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_OPT_NAME="hello1"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Baremetal Project
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_BAREMETAL_PROJ0=n
|
||||||
|
CONFIG_CONT1_BAREMETAL_PROJ1=y
|
||||||
|
CONFIG_CONT1_BAREMETAL_PROJ2=n
|
||||||
|
CONFIG_CONT1_BAREMETAL_PROJ3=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Default Pager Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_PAGER_LMA=0x100000
|
||||||
|
CONFIG_CONT1_PAGER_VMA=0x20000000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Physical Memory Regions (Capabilities)
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_PHYSMEM_REGIONS=1
|
||||||
|
CONFIG_CONT1_PHYS0_START=0x100000
|
||||||
|
CONFIG_CONT1_PHYS0_END=0x200000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Virtual Memory Regions (Capabilities)
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_VIRTMEM_REGIONS=1
|
||||||
|
CONFIG_CONT1_VIRT0_START=0x20000000
|
||||||
|
CONFIG_CONT1_VIRT0_END=0x30000000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Capability List
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Thread Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_CAP_THREADPOOL_USE=y
|
||||||
|
CONFIG_CONT1_CAP_THREADPOOL_SIZE=64
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Space Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_CAP_SPACEPOOL_USE=y
|
||||||
|
CONFIG_CONT1_CAP_SPACEPOOL_SIZE=64
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Mutex Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_CAP_MUTEXPOOL_USE=y
|
||||||
|
CONFIG_CONT1_CAP_MUTEXPOOL_SIZE=100
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Map Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_CAP_MAPPOOL_USE=y
|
||||||
|
CONFIG_CONT1_CAP_MAPPOOL_SIZE=800
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Capability Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_CAP_CAPPOOL_USE=y
|
||||||
|
CONFIG_CONT1_CAP_CAPPOOL_SIZE=32
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Thread Control Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_CAP_TCTRL_USE=y
|
||||||
|
CONFIG_CONT1_CAP_TCTRL_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT1_CAP_TCTRL_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Exchange Registers Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_CAP_EXREGS_USE=y
|
||||||
|
CONFIG_CONT1_CAP_EXREGS_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT1_CAP_EXREGS_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 IPC Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_CAP_IPC_USE=y
|
||||||
|
CONFIG_CONT1_CAP_IPC_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT1_CAP_IPC_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
CONFIG_CONT1_CAP_IPC_TARGET_ANOTHER_CONTAINER=n
|
||||||
|
CONFIG_CONT1_CAP_IPC_TARGET_ANOTHER_PAGER=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Capability Control Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_CAP_CAPCTRL_USE=y
|
||||||
|
CONFIG_CONT1_CAP_CAPCTRL_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT1_CAP_CAPCTRL_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Userspace Mutex Control Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_CAP_UMUTEX_USE=y
|
||||||
|
CONFIG_CONT1_CAP_UMUTEX_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT1_CAP_UMUTEX_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Custom Capability 0 Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_CAP_CUSTOM0_USE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Custom Capability 1 Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_CAP_CUSTOM1_USE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Custom Capability 2 Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_CAP_CUSTOM2_USE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 1 Custom Capability 3 Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT1_CAP_CUSTOM3_USE=n
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Parameters
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Type
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_TYPE_BAREMETAL=y
|
||||||
|
CONFIG_CONT2_TYPE_POSIX=n
|
||||||
|
CONFIG_CONT2_TYPE_CUSTOM=n
|
||||||
|
CONFIG_CONT2_TYPE_LINUX=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Options
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_OPT_NAME="hello2"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Baremetal Project
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_BAREMETAL_PROJ0=n
|
||||||
|
CONFIG_CONT2_BAREMETAL_PROJ1=y
|
||||||
|
CONFIG_CONT2_BAREMETAL_PROJ2=n
|
||||||
|
CONFIG_CONT2_BAREMETAL_PROJ3=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Default Pager Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_PAGER_LMA=0x200000
|
||||||
|
CONFIG_CONT2_PAGER_VMA=0x30000000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Physical Memory Regions (Capabilities)
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_PHYSMEM_REGIONS=1
|
||||||
|
CONFIG_CONT2_PHYS0_START=0x200000
|
||||||
|
CONFIG_CONT2_PHYS0_END=0x300000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Virtual Memory Regions (Capabilities)
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_VIRTMEM_REGIONS=1
|
||||||
|
CONFIG_CONT2_VIRT0_START=0x30000000
|
||||||
|
CONFIG_CONT2_VIRT0_END=0x40000000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Capability List
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Thread Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_CAP_THREADPOOL_USE=y
|
||||||
|
CONFIG_CONT2_CAP_THREADPOOL_SIZE=64
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Space Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_CAP_SPACEPOOL_USE=y
|
||||||
|
CONFIG_CONT2_CAP_SPACEPOOL_SIZE=64
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Mutex Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_CAP_MUTEXPOOL_USE=y
|
||||||
|
CONFIG_CONT2_CAP_MUTEXPOOL_SIZE=100
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Map Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_CAP_MAPPOOL_USE=y
|
||||||
|
CONFIG_CONT2_CAP_MAPPOOL_SIZE=800
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Capability Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_CAP_CAPPOOL_USE=y
|
||||||
|
CONFIG_CONT2_CAP_CAPPOOL_SIZE=32
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Thread Control Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_CAP_TCTRL_USE=y
|
||||||
|
CONFIG_CONT2_CAP_TCTRL_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT2_CAP_TCTRL_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Exchange Registers Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_CAP_EXREGS_USE=y
|
||||||
|
CONFIG_CONT2_CAP_EXREGS_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT2_CAP_EXREGS_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 IPC Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_CAP_IPC_USE=y
|
||||||
|
CONFIG_CONT2_CAP_IPC_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT2_CAP_IPC_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
CONFIG_CONT2_CAP_IPC_TARGET_ANOTHER_CONTAINER=n
|
||||||
|
CONFIG_CONT2_CAP_IPC_TARGET_ANOTHER_PAGER=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Capability Control Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_CAP_CAPCTRL_USE=y
|
||||||
|
CONFIG_CONT2_CAP_CAPCTRL_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT2_CAP_CAPCTRL_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Userspace Mutex Control Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_CAP_UMUTEX_USE=y
|
||||||
|
CONFIG_CONT2_CAP_UMUTEX_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT2_CAP_UMUTEX_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Custom Capability 0 Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_CAP_CUSTOM0_USE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Custom Capability 1 Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_CAP_CUSTOM1_USE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Custom Capability 2 Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_CAP_CUSTOM2_USE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 2 Custom Capability 3 Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT2_CAP_CUSTOM3_USE=n
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Parameters
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Type
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_TYPE_BAREMETAL=y
|
||||||
|
CONFIG_CONT3_TYPE_POSIX=n
|
||||||
|
CONFIG_CONT3_TYPE_CUSTOM=n
|
||||||
|
CONFIG_CONT3_TYPE_LINUX=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Options
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_OPT_NAME="hello3"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Baremetal Project
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_BAREMETAL_PROJ0=n
|
||||||
|
CONFIG_CONT3_BAREMETAL_PROJ1=y
|
||||||
|
CONFIG_CONT3_BAREMETAL_PROJ2=n
|
||||||
|
CONFIG_CONT3_BAREMETAL_PROJ3=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Default Pager Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_PAGER_LMA=0x300000
|
||||||
|
CONFIG_CONT3_PAGER_VMA=0x40000000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Physical Memory Regions (Capabilities)
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_PHYSMEM_REGIONS=1
|
||||||
|
CONFIG_CONT3_PHYS0_START=0x300000
|
||||||
|
CONFIG_CONT3_PHYS0_END=0x400000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Virtual Memory Regions (Capabilities)
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_VIRTMEM_REGIONS=1
|
||||||
|
CONFIG_CONT3_VIRT0_START=0x40000000
|
||||||
|
CONFIG_CONT3_VIRT0_END=0x50000000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Capability List
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Thread Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_CAP_THREADPOOL_USE=y
|
||||||
|
CONFIG_CONT3_CAP_THREADPOOL_SIZE=64
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Space Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_CAP_SPACEPOOL_USE=y
|
||||||
|
CONFIG_CONT3_CAP_SPACEPOOL_SIZE=64
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Mutex Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_CAP_MUTEXPOOL_USE=y
|
||||||
|
CONFIG_CONT3_CAP_MUTEXPOOL_SIZE=100
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Map Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_CAP_MAPPOOL_USE=y
|
||||||
|
CONFIG_CONT3_CAP_MAPPOOL_SIZE=800
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Capability Pool Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_CAP_CAPPOOL_USE=y
|
||||||
|
CONFIG_CONT3_CAP_CAPPOOL_SIZE=32
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Thread Control Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_CAP_TCTRL_USE=y
|
||||||
|
CONFIG_CONT3_CAP_TCTRL_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT3_CAP_TCTRL_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Exchange Registers Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_CAP_EXREGS_USE=y
|
||||||
|
CONFIG_CONT3_CAP_EXREGS_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT3_CAP_EXREGS_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 IPC Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_CAP_IPC_USE=y
|
||||||
|
CONFIG_CONT3_CAP_IPC_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT3_CAP_IPC_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
CONFIG_CONT3_CAP_IPC_TARGET_ANOTHER_CONTAINER=n
|
||||||
|
CONFIG_CONT3_CAP_IPC_TARGET_ANOTHER_PAGER=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Capability Control Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_CAP_CAPCTRL_USE=y
|
||||||
|
CONFIG_CONT3_CAP_CAPCTRL_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT3_CAP_CAPCTRL_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Userspace Mutex Control Capability
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_CAP_UMUTEX_USE=y
|
||||||
|
CONFIG_CONT3_CAP_UMUTEX_TARGET_CURRENT_CONTAINER=y
|
||||||
|
CONFIG_CONT3_CAP_UMUTEX_TARGET_CURRENT_PAGER_SPACE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Custom Capability 0 Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_CAP_CUSTOM0_USE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Custom Capability 1 Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_CAP_CUSTOM1_USE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Custom Capability 2 Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_CAP_CUSTOM2_USE=n
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Container 3 Custom Capability 3 Parameters
|
||||||
|
#
|
||||||
|
CONFIG_CONT3_CAP_CUSTOM3_USE=n
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Derived symbols
|
||||||
|
#
|
||||||
|
CONFIG_DRIVER_IRQ_PL190=y
|
||||||
|
CONFIG_DRIVER_TIMER_SP804=y
|
||||||
|
CONFIG_DRIVER_IRQ_GIC=n
|
||||||
|
CONFIG_DRIVER_UART_PL011=y
|
||||||
|
#
|
||||||
|
# That's all, folks!
|
||||||
@@ -8,33 +8,13 @@
|
|||||||
|
|
||||||
#include <l4lib/types.h>
|
#include <l4lib/types.h>
|
||||||
#include <l4/lib/list.h>
|
#include <l4/lib/list.h>
|
||||||
|
#include <l4/api/capability.h>
|
||||||
|
|
||||||
struct cap_list {
|
struct cap_list {
|
||||||
int ncaps;
|
int ncaps;
|
||||||
struct link caps;
|
struct link caps;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct capability {
|
|
||||||
struct link list;
|
|
||||||
|
|
||||||
/* Capability identifiers */
|
|
||||||
l4id_t capid; /* Unique capability ID */
|
|
||||||
l4id_t owner; /* Capability owner ID */
|
|
||||||
l4id_t resid; /* Targeted resource ID */
|
|
||||||
unsigned int type; /* Capability and target resource type */
|
|
||||||
|
|
||||||
/* Capability limits/permissions */
|
|
||||||
u32 access; /* Permitted operations */
|
|
||||||
|
|
||||||
/* Limits on the resource */
|
|
||||||
unsigned long start; /* Resource start value */
|
|
||||||
unsigned long end; /* Resource end value */
|
|
||||||
unsigned long size; /* Resource size */
|
|
||||||
|
|
||||||
unsigned long used; /* Resource used size */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static inline void cap_list_init(struct cap_list *clist)
|
static inline void cap_list_init(struct cap_list *clist)
|
||||||
{
|
{
|
||||||
clist->ncaps = 0;
|
clist->ncaps = 0;
|
||||||
|
|||||||
@@ -364,9 +364,12 @@ int cap_read_all()
|
|||||||
BUG();
|
BUG();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Copy them to real allocated structures */
|
/* Copy them to real allocated structures */
|
||||||
copy_boot_capabilities(ncaps);
|
copy_boot_capabilities(ncaps);
|
||||||
|
|
||||||
|
cap_list_print(&capability_list);
|
||||||
|
|
||||||
memset(&cont_mem_regions, 0, sizeof(cont_mem_regions));
|
memset(&cont_mem_regions, 0, sizeof(cont_mem_regions));
|
||||||
|
|
||||||
/* Set up pointers to important capabilities */
|
/* Set up pointers to important capabilities */
|
||||||
@@ -394,7 +397,7 @@ int cap_read_all()
|
|||||||
BUG();
|
BUG();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(cap->access & CAP_MAP_UTCB_BIT)) {
|
if (!(cap->access & CAP_MAP_UTCB)) {
|
||||||
printf("FATAL: Region designated "
|
printf("FATAL: Region designated "
|
||||||
"for UTCB allocation does not "
|
"for UTCB allocation does not "
|
||||||
"have UTCB map permissions");
|
"have UTCB map permissions");
|
||||||
|
|||||||
@@ -6,6 +6,10 @@
|
|||||||
#ifndef __API_CAPABILITY_H__
|
#ifndef __API_CAPABILITY_H__
|
||||||
#define __API_CAPABILITY_H__
|
#define __API_CAPABILITY_H__
|
||||||
|
|
||||||
|
#if defined(__KERNEL__)
|
||||||
|
#include <l4/lib/list.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Capability syscall request types */
|
/* Capability syscall request types */
|
||||||
#define CAP_CONTROL_NCAPS 0x00000000
|
#define CAP_CONTROL_NCAPS 0x00000000
|
||||||
#define CAP_CONTROL_READ 0x00000001
|
#define CAP_CONTROL_READ 0x00000001
|
||||||
@@ -30,4 +34,63 @@
|
|||||||
#define CAP_SPLIT_ACCESS 0x00000002
|
#define CAP_SPLIT_ACCESS 0x00000002
|
||||||
#define CAP_SPLIT_RANGE 0x00000003 /* Returns -EPERM */
|
#define CAP_SPLIT_RANGE 0x00000003 /* Returns -EPERM */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A capability is a unique representation of security
|
||||||
|
* qualifiers on a particular resource.
|
||||||
|
*
|
||||||
|
* In this structure:
|
||||||
|
*
|
||||||
|
* The capid denotes the unique capability ID.
|
||||||
|
* The resid denotes the unique ID of targeted resource.
|
||||||
|
* The owner denotes the unique ID of the one and only capability owner. This is
|
||||||
|
* almost always a thread ID.
|
||||||
|
*
|
||||||
|
* The type field contains two types:
|
||||||
|
* - The capability type,
|
||||||
|
* - The targeted resource type.
|
||||||
|
*
|
||||||
|
* The targeted resouce type denotes what type of resource the capability is
|
||||||
|
* allowed to operate on. For example a thread, a thread group, an address space
|
||||||
|
* or a memory can be of this type.
|
||||||
|
*
|
||||||
|
* The capability type defines the general set of operations allowed on a
|
||||||
|
* particular resource. For example a capability type may be thread_control,
|
||||||
|
* exchange_registers, ipc, or map operations. A resource type may be such as a
|
||||||
|
* thread, a thread group, a virtual or physical memory region.
|
||||||
|
*
|
||||||
|
* There are also quantitative capability types. While their names denote
|
||||||
|
* quantitative objects such as memory, threads, and address spaces, these
|
||||||
|
* types actually define the quantitative operations available on those
|
||||||
|
* resources such as creation and deletion of a thread, allocation and
|
||||||
|
* deallocation of a memory region etc.
|
||||||
|
*
|
||||||
|
* The access field denotes the fine-grain operations available on a particular
|
||||||
|
* resource. The meaning of each bitfield differs according to the type of the
|
||||||
|
* capability. For example, for a capability type thread_control, the bitfields
|
||||||
|
* may mean suspend, resume, create, delete etc.
|
||||||
|
*/
|
||||||
|
struct capability {
|
||||||
|
struct link list;
|
||||||
|
|
||||||
|
/* Capability identifiers */
|
||||||
|
l4id_t capid; /* Unique capability ID */
|
||||||
|
l4id_t owner; /* Capability owner ID */
|
||||||
|
l4id_t resid; /* Targeted resource ID */
|
||||||
|
unsigned int type; /* Capability and target resource type */
|
||||||
|
|
||||||
|
/* Capability limits/permissions */
|
||||||
|
u32 access; /* Permitted operations */
|
||||||
|
|
||||||
|
/* Limits on the resource (NOTE: must never have signed type) */
|
||||||
|
unsigned long start; /* Resource start value */
|
||||||
|
unsigned long end; /* Resource end value */
|
||||||
|
unsigned long size; /* Resource size */
|
||||||
|
|
||||||
|
/* Use count of resource */
|
||||||
|
unsigned long used;
|
||||||
|
|
||||||
|
/* User-defined attributes on capability (like devtypes) */
|
||||||
|
unsigned int uattr;
|
||||||
|
};
|
||||||
|
|
||||||
#endif /* __API_CAPABILITY_H__ */
|
#endif /* __API_CAPABILITY_H__ */
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
#ifndef __GENERIC_CAPABILITY_H__
|
#ifndef __GENERIC_CAPABILITY_H__
|
||||||
#define __GENERIC_CAPABILITY_H__
|
#define __GENERIC_CAPABILITY_H__
|
||||||
|
|
||||||
#include <l4/lib/list.h>
|
|
||||||
#include <l4/api/exregs.h>
|
#include <l4/api/exregs.h>
|
||||||
|
#include <l4/api/capability.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Some resources that capabilities possess don't
|
* Some resources that capabilities possess don't
|
||||||
@@ -19,64 +19,6 @@
|
|||||||
*/
|
*/
|
||||||
#define CAP_RESID_NONE -1
|
#define CAP_RESID_NONE -1
|
||||||
|
|
||||||
/*
|
|
||||||
* A capability is a unique representation of security
|
|
||||||
* qualifiers on a particular resource.
|
|
||||||
*
|
|
||||||
* In this structure:
|
|
||||||
*
|
|
||||||
* The capid denotes the unique capability ID.
|
|
||||||
* The resid denotes the unique ID of targeted resource.
|
|
||||||
* The owner denotes the unique ID of the one and only capability owner. This is
|
|
||||||
* almost always a thread ID.
|
|
||||||
*
|
|
||||||
* The type field contains two types:
|
|
||||||
* - The capability type,
|
|
||||||
* - The targeted resource type.
|
|
||||||
*
|
|
||||||
* The targeted resouce type denotes what type of resource the capability is
|
|
||||||
* allowed to operate on. For example a thread, a thread group, an address space
|
|
||||||
* or a memory can be of this type.
|
|
||||||
*
|
|
||||||
* The capability type defines the general set of operations allowed on a
|
|
||||||
* particular resource. For example a capability type may be thread_control,
|
|
||||||
* exchange_registers, ipc, or map operations. A resource type may be such as a
|
|
||||||
* thread, a thread group, a virtual or physical memory region.
|
|
||||||
*
|
|
||||||
* There are also quantitative capability types. While their names denote
|
|
||||||
* quantitative objects such as memory, threads, and address spaces, these
|
|
||||||
* types actually define the quantitative operations available on those
|
|
||||||
* resources such as creation and deletion of a thread, allocation and
|
|
||||||
* deallocation of a memory region etc.
|
|
||||||
*
|
|
||||||
* The access field denotes the fine-grain operations available on a particular
|
|
||||||
* resource. The meaning of each bitfield differs according to the type of the
|
|
||||||
* capability. For example, for a capability type thread_control, the bitfields
|
|
||||||
* may mean suspend, resume, create, delete etc.
|
|
||||||
*/
|
|
||||||
struct capability {
|
|
||||||
struct link list;
|
|
||||||
|
|
||||||
/* Capability identifiers */
|
|
||||||
l4id_t capid; /* Unique capability ID */
|
|
||||||
l4id_t owner; /* Capability owner ID */
|
|
||||||
l4id_t resid; /* Targeted resource ID */
|
|
||||||
unsigned int type; /* Capability and target resource type */
|
|
||||||
|
|
||||||
/* Capability limits/permissions */
|
|
||||||
u32 access; /* Permitted operations */
|
|
||||||
|
|
||||||
/* Limits on the resource (NOTE: must never have signed type) */
|
|
||||||
unsigned long start; /* Resource start value */
|
|
||||||
unsigned long end; /* Resource end value */
|
|
||||||
unsigned long size; /* Resource size */
|
|
||||||
|
|
||||||
/* Use count of resource */
|
|
||||||
unsigned long used;
|
|
||||||
|
|
||||||
/* User-defined attributes on capability (like devtypes) */
|
|
||||||
unsigned int uattr;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct cap_list {
|
struct cap_list {
|
||||||
int ktcb_refs;
|
int ktcb_refs;
|
||||||
|
|||||||
Reference in New Issue
Block a user