@@ -556,7 +556,7 @@ static int map_anon_page(void *addr, uint32_t flags)
556556 }
557557 frame_mapped_set (pf , addr );
558558#ifdef CONFIG_DEMAND_PAGING
559- if (!lock ) {
559+ if (IS_ENABLED ( CONFIG_EVICTION_TRACKING ) && ( !lock ) ) {
560560 k_mem_paging_eviction_add (pf );
561561 }
562562#endif
@@ -784,7 +784,8 @@ void k_mem_unmap_phys_guard(void *addr, size_t size, bool is_anon)
784784
785785 arch_mem_unmap (pos , CONFIG_MMU_PAGE_SIZE );
786786#ifdef CONFIG_DEMAND_PAGING
787- if (!k_mem_page_frame_is_pinned (pf )) {
787+ if (IS_ENABLED (CONFIG_EVICTION_TRACKING ) &&
788+ (!k_mem_page_frame_is_pinned (pf ))) {
788789 k_mem_paging_eviction_remove (pf );
789790 }
790791#endif
@@ -1041,7 +1042,8 @@ static void mark_linker_section_pinned(void *start_addr, void *end_addr,
10411042 } else {
10421043 k_mem_page_frame_clear (pf , K_MEM_PAGE_FRAME_PINNED );
10431044#ifdef CONFIG_DEMAND_PAGING
1044- if (k_mem_page_frame_is_evictable (pf )) {
1045+ if (IS_ENABLED (CONFIG_EVICTION_TRACKING ) &&
1046+ k_mem_page_frame_is_evictable (pf )) {
10451047 k_mem_paging_eviction_add (pf );
10461048 }
10471049#endif
@@ -1147,10 +1149,13 @@ void z_mem_manage_init(void)
11471149#endif /* CONFIG_DEMAND_PAGING_TIMING_HISTOGRAM */
11481150 k_mem_paging_backing_store_init ();
11491151 k_mem_paging_eviction_init ();
1150- /* start tracking evictable page installed above if any */
1151- K_MEM_PAGE_FRAME_FOREACH (phys , pf ) {
1152- if (k_mem_page_frame_is_evictable (pf )) {
1153- k_mem_paging_eviction_add (pf );
1152+
1153+ if (IS_ENABLED (CONFIG_EVICTION_TRACKING )) {
1154+ /* start tracking evictable page installed above if any */
1155+ K_MEM_PAGE_FRAME_FOREACH (phys , pf ) {
1156+ if (k_mem_page_frame_is_evictable (pf )) {
1157+ k_mem_paging_eviction_add (pf );
1158+ }
11541159 }
11551160 }
11561161#endif /* CONFIG_DEMAND_PAGING */
@@ -1347,7 +1352,10 @@ static int page_frame_prepare_locked(struct k_mem_page_frame *pf, bool *dirty_pt
13471352 return - ENOMEM ;
13481353 }
13491354 arch_mem_page_out (k_mem_page_frame_to_virt (pf ), * location_ptr );
1350- k_mem_paging_eviction_remove (pf );
1355+
1356+ if (IS_ENABLED (CONFIG_EVICTION_TRACKING )) {
1357+ k_mem_paging_eviction_remove (pf );
1358+ }
13511359 } else {
13521360 /* Shouldn't happen unless this function is mis-used */
13531361 __ASSERT (!dirty , "un-mapped page determined to be dirty" );
@@ -1683,7 +1691,9 @@ static bool do_page_fault(void *addr, bool pin)
16831691
16841692 pf = k_mem_phys_to_page_frame (phys );
16851693 if (!k_mem_page_frame_is_pinned (pf )) {
1686- k_mem_paging_eviction_remove (pf );
1694+ if (IS_ENABLED (CONFIG_EVICTION_TRACKING )) {
1695+ k_mem_paging_eviction_remove (pf );
1696+ }
16871697 k_mem_page_frame_set (pf , K_MEM_PAGE_FRAME_PINNED );
16881698 }
16891699 }
@@ -1738,7 +1748,7 @@ static bool do_page_fault(void *addr, bool pin)
17381748
17391749 arch_mem_page_in (addr , k_mem_page_frame_to_phys (pf ));
17401750 k_mem_paging_backing_store_page_finalize (pf , page_in_location );
1741- if (!pin ) {
1751+ if (IS_ENABLED ( CONFIG_EVICTION_TRACKING ) && ( !pin ) ) {
17421752 k_mem_paging_eviction_add (pf );
17431753 }
17441754out :
@@ -1807,7 +1817,10 @@ static void do_mem_unpin(void *addr)
18071817 pf = k_mem_phys_to_page_frame (phys );
18081818 if (k_mem_page_frame_is_pinned (pf )) {
18091819 k_mem_page_frame_clear (pf , K_MEM_PAGE_FRAME_PINNED );
1810- k_mem_paging_eviction_add (pf );
1820+
1821+ if (IS_ENABLED (CONFIG_EVICTION_TRACKING )) {
1822+ k_mem_paging_eviction_add (pf );
1823+ }
18111824 }
18121825 }
18131826 k_spin_unlock (& z_mm_lock , key );
0 commit comments