2024-04-26 01:57:17 +08:00
|
|
|
# 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
|
2024-07-05 21:45:46 +08:00
|
|
|
range 0 $(UINT8_MAX)
|
2024-04-26 01:57:17 +08:00
|
|
|
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.
|
2024-04-26 02:35:35 +08:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
2024-04-26 01:57:17 +08:00
|
|
|
endmenu
|