| # Kernel configuration options |
| |
| # Copyright (c) 2014-2015 Wind River Systems, Inc. |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| menu "Memory Domains" |
| |
| config MAX_DOMAIN_PARTITIONS |
| int "Maximum number of partitions per memory domain" |
| default 16 |
| range 0 $(UINT8_MAX) |
| depends on USERSPACE |
| help |
| Configure the maximum number of partitions per memory domain. |
| |
| config ARCH_MEM_DOMAIN_DATA |
| bool |
| depends on USERSPACE |
| help |
| This hidden option is selected by the target architecture if |
| architecture-specific data is needed on a per memory domain basis. |
| If so, the architecture defines a 'struct arch_mem_domain' which is |
| embedded within every struct k_mem_domain. The architecture |
| must also define the arch_mem_domain_init() function to set this up |
| when a memory domain is created. |
| |
| Typical uses might be a set of page tables for that memory domain. |
| |
| config ARCH_MEM_DOMAIN_SYNCHRONOUS_API |
| bool |
| depends on USERSPACE |
| help |
| This hidden option is selected by the target architecture if |
| modifying a memory domain's partitions at runtime, or changing |
| a memory domain's thread membership requires synchronous calls |
| into the architecture layer. |
| |
| If enabled, the architecture layer must implement the following |
| APIs: |
| |
| arch_mem_domain_thread_add |
| arch_mem_domain_thread_remove |
| arch_mem_domain_partition_remove |
| arch_mem_domain_partition_add |
| |
| It's important to note that although supervisor threads can be |
| members of memory domains, they have no implications on supervisor |
| thread access to memory. Memory domain APIs may only be invoked from |
| supervisor mode. |
| |
| For these reasons, on uniprocessor systems unless memory access |
| policy is managed in separate software constructions like page |
| tables, these APIs don't need to be implemented as the underlying |
| memory management hardware will be reprogrammed on context switch |
| anyway. |
| |
| config ARCH_MEM_DOMAIN_SUPPORTS_ISOLATED_STACKS |
| bool |
| help |
| This hidden option is selected by the target architecture if |
| the architecture supports isolating thread stacks for threads |
| within the same memory domain. |
| |
| config MEM_DOMAIN_ISOLATED_STACKS |
| bool |
| default y |
| depends on (MMU || MPU) && ARCH_MEM_DOMAIN_SUPPORTS_ISOLATED_STACKS |
| help |
| If enabled, thread stacks within the same memory domains are |
| isolated which means threads within the same memory domains |
| have no access to others threads' stacks. |
| |
| If disabled, threads within the same memory domains can access |
| other threads' stacks. |
| |
| Regardless of this settings, threads cannot access the stacks of |
| threads outside of their domains. |
| |
| endmenu |