# 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