We make a policy change here: all threads are members of a
memory domain, never NULL. We introduce a default memory domain
for threads that haven't been assigned to or inherited another one.
Primary motivation for this change is better MMU support, as
one common configuration will be to maintain page tables at
the memory domain level.
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
We don't have use-cases and it introduces complexities with
allocating page tables on MMU systems.
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Some systems may need to associate arch-specific data to
a memory domain. Add a Kconfig and `arch` field for this,
and a new arch API to initialize it.
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Wrap the entire definition around CONFIG_MEMORY_PROTECTION.
Add incomplete declaration for IS_ENABLED() purposes.
Some arch code uses struct k_mem_partition internally for
MPU management, even if userspace isn't enabled.
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
ifdef the entire struct k_mem_domain around CONFIG_USERSPACE,
this is specifically and only a userspace feature.
Add an incomplete definition for purposes of allowing the APIs
to be used with IS_ENABLED().
Prevents accidental useless instatiation of k_mem_domain structs.
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This now has its own header instead of kernel.h. The code is
unchanged other than a forward declaration of k_tid_t.
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>