Zephyr API Documentation 4.0.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches

Eviction algorithm APIs. More...

Functions

void k_mem_paging_eviction_add (struct k_mem_page_frame *pf)
 Submit a page frame for eviction candidate tracking.
 
void k_mem_paging_eviction_remove (struct k_mem_page_frame *pf)
 Remove a page frame from potential eviction candidates.
 
void k_mem_paging_eviction_accessed (uintptr_t phys)
 Process a page frame as being newly accessed.
 
struct k_mem_page_frame * k_mem_paging_eviction_select (bool *dirty)
 Select a page frame for eviction.
 
void k_mem_paging_eviction_init (void)
 Initialization function.
 

Detailed Description

Eviction algorithm APIs.

Function Documentation

◆ k_mem_paging_eviction_accessed()

void k_mem_paging_eviction_accessed ( uintptr_t phys)

#include <zephyr/kernel/mm/demand_paging.h>

Process a page frame as being newly accessed.

The architecture-specific memory fault handler will invoke this to tell the eviction algorithm the provided physical address belongs to a page frame being accessed and such page frame should become unlikely to be considered as the next eviction candidate.

This function is invoked with interrupts locked.

Parameters
[in]physThe physical address being accessed

◆ k_mem_paging_eviction_add()

void k_mem_paging_eviction_add ( struct k_mem_page_frame * pf)

#include <zephyr/kernel/mm/demand_paging.h>

Submit a page frame for eviction candidate tracking.

The kernel will invoke this to tell the eviction algorithm the provided page frame may be considered as a potential eviction candidate.

This function will never be called before the initial k_mem_paging_eviction_init().

This function is invoked with interrupts locked.

Parameters
[in]pfThe page frame to add

◆ k_mem_paging_eviction_init()

void k_mem_paging_eviction_init ( void )

#include <zephyr/kernel/mm/demand_paging.h>

Initialization function.

Called at POST_KERNEL to perform any necessary initialization tasks for the eviction algorithm. k_mem_paging_eviction_select() is guaranteed to never be called until this has returned, and this will only be called once.

◆ k_mem_paging_eviction_remove()

void k_mem_paging_eviction_remove ( struct k_mem_page_frame * pf)

#include <zephyr/kernel/mm/demand_paging.h>

Remove a page frame from potential eviction candidates.

The kernel will invoke this to tell the eviction algorithm the provided page frame may no longer be considered as a potential eviction candidate.

This function will only be called with page frames that were submitted using k_mem_paging_eviction_add() beforehand.

This function is invoked with interrupts locked.

Parameters
[in]pfThe page frame to remove

◆ k_mem_paging_eviction_select()

struct k_mem_page_frame * k_mem_paging_eviction_select ( bool * dirty)

#include <zephyr/kernel/mm/demand_paging.h>

Select a page frame for eviction.

The kernel will invoke this to choose a page frame to evict if there are no free page frames. It is not guaranteed that the returned page frame will actually be evicted. If it is then the kernel will call k_mem_paging_eviction_remove() with it.

This function will never be called before the initial k_mem_paging_eviction_init().

This function is invoked with interrupts locked.

Parameters
[out]dirtyWhether the page to evict is dirty
Returns
The page frame to evict