7#ifndef ZEPHYR_INCLUDE_SYS_MEM_MANAGE_H 
    8#define ZEPHYR_INCLUDE_SYS_MEM_MANAGE_H 
   12#if defined(CONFIG_ARM_MMU) && defined(CONFIG_ARM64) 
   28#define K_MEM_CACHE_NONE        2 
   31#define K_MEM_CACHE_WT          1 
   34#define K_MEM_CACHE_WB          0 
   42#define K_MEM_CACHE_MASK        (BIT(3) - 1) 
   49#define K_MEM_PERM_RW           BIT(3) 
   52#define K_MEM_PERM_EXEC         BIT(4) 
   55#define K_MEM_PERM_USER         BIT(5) 
   76#define Z_MEM_VM_OFFSET ((CONFIG_KERNEL_VM_BASE + CONFIG_KERNEL_VM_OFFSET) - \ 
   77                         (CONFIG_SRAM_BASE_ADDRESS + CONFIG_SRAM_OFFSET)) 
   79#define Z_MEM_VM_OFFSET 0 
   82#define Z_MEM_PHYS_ADDR(virt)   ((virt) - Z_MEM_VM_OFFSET) 
   83#define Z_MEM_VIRT_ADDR(phys)   ((phys) + Z_MEM_VM_OFFSET) 
   85#if Z_MEM_VM_OFFSET != 0 
   88#error "XIP and a virtual memory kernel are not allowed" 
   99#ifdef CONFIG_DEMAND_PAGING_STATS 
  105                unsigned long                   irq_locked;
 
  108                unsigned long                   irq_unlocked;
 
  110#ifndef CONFIG_DEMAND_PAGING_ALLOW_IRQ 
  112                unsigned long                   in_isr;
 
  127#ifdef CONFIG_DEMAND_PAGING_TIMING_HISTOGRAM 
  129        unsigned long   counts[CONFIG_DEMAND_PAGING_TIMING_HISTOGRAM_NUM_BINS];
 
  134        unsigned long   bounds[CONFIG_DEMAND_PAGING_TIMING_HISTOGRAM_NUM_BINS];
 
  139static inline uintptr_t z_mem_phys_addr(
void *virt)
 
  144        __ASSERT((addr >= CONFIG_KERNEL_VM_BASE) &&
 
  145                 (addr < (CONFIG_KERNEL_VM_BASE +
 
  146                          (CONFIG_KERNEL_VM_SIZE))),
 
  147                 "address %p not in permanent mappings", virt);
 
  150        __ASSERT((addr >= CONFIG_SRAM_BASE_ADDRESS) &&
 
  151                 (addr < (CONFIG_SRAM_BASE_ADDRESS +
 
  152                          (CONFIG_SRAM_SIZE * 1024UL))),
 
  153                 "physical address 0x%lx not in RAM",
 
  154                 (
unsigned long)addr);
 
  161        return Z_MEM_PHYS_ADDR(addr);
 
  165static inline void *z_mem_virt_addr(
uintptr_t phys)
 
  167        __ASSERT((phys >= CONFIG_SRAM_BASE_ADDRESS) &&
 
  168                 (phys < (CONFIG_SRAM_BASE_ADDRESS +
 
  169                          (CONFIG_SRAM_SIZE * 1024UL))),
 
  170                 "physical address 0x%lx not in RAM", (
unsigned long)phys);
 
  176        return (
void *)Z_MEM_VIRT_ADDR(phys);
 
  254void z_phys_unmap(
uint8_t *virt, 
size_t size);
 
  269#define K_MEM_MAP_UNINIT        BIT(16) 
  278#define K_MEM_MAP_LOCK          BIT(17) 
  363                          uintptr_t addr, 
size_t size, 
size_t align);
 
  499#include <syscalls/mem_manage.h> 
static struct k_thread thread[2]
Definition: atomic.c:26
 
void k_mem_paging_backing_store_page_finalize(struct z_page_frame *pf, uintptr_t location)
 
void k_mem_paging_backing_store_page_out(uintptr_t location)
 
void k_mem_paging_backing_store_location_free(uintptr_t location)
 
void k_mem_paging_backing_store_init(void)
 
void k_mem_paging_backing_store_page_in(uintptr_t location)
 
int k_mem_paging_backing_store_location_get(struct z_page_frame *pf, uintptr_t *location, bool page_fault)
 
struct z_page_frame * k_mem_paging_eviction_select(bool *dirty)
 
void k_mem_paging_eviction_init(void)
 
int k_mem_page_out(void *addr, size_t size)
 
void k_mem_paging_histogram_backing_store_page_in_get(struct k_mem_paging_histogram_t *hist)
 
void k_mem_unpin(void *addr, size_t size)
 
void k_mem_paging_stats_get(struct k_mem_paging_stats_t *stats)
 
void k_mem_pin(void *addr, size_t size)
 
void k_mem_page_in(void *addr, size_t size)
 
void k_mem_paging_histogram_backing_store_page_out_get(struct k_mem_paging_histogram_t *hist)
 
void k_mem_paging_histogram_eviction_get(struct k_mem_paging_histogram_t *hist)
 
void k_mem_paging_thread_stats_get(struct k_thread *thread, struct k_mem_paging_stats_t *stats)
 
size_t k_mem_free_get(void)
 
size_t k_mem_region_align(uintptr_t *aligned_addr, size_t *aligned_size, uintptr_t addr, size_t size, size_t align)
 
void k_mem_unmap(void *addr, size_t size)
 
void * k_mem_map(size_t size, uint32_t flags)
 
flags
Definition: parser.h:96
 
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
 
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
 
__UINTPTR_TYPE__ uintptr_t
Definition: stdint.h:105
 
Definition: mem_manage.h:126
 
Definition: mem_manage.h:98