MOS Source Code
Loading...
Searching...
No Matches
cow.c File Reference
#include "mos/mm/cow.h"
#include "mos/mm/mm.h"
#include "mos/mm/mmstat.h"
#include "mos/mm/paging/paging.h"
#include "mos/platform/platform.h"
#include <mos/interrupt/ipi.h>
#include <mos/mm/physical/pmm.h>
#include <mos/syslog/printk.h>
#include <mos/tasks/process.h>
#include <mos/tasks/task_types.h>
#include <mos/types.h>
#include <mos_string.h>
+ Include dependency graph for cow.c:

Go to the source code of this file.

Functions

static phyframe_tzero_page (void)
 
static vmfault_result_t cow_zod_fault_handler (vmap_t *vmap, ptr_t fault_addr, pagefault_t *info)
 
vmap_tcow_clone_vmap_locked (mm_context_t *target_mmctx, vmap_t *src_vmap)
 Copy-on-write a page range.
 
vmap_tcow_allocate_zeroed_pages (mm_context_t *mmctx, size_t npages, ptr_t vaddr, valloc_flags allocflags, vm_flags flags)
 Allocate zero-on-demand pages at a specific address.
 

Variables

static phyframe_t_zero_page = NULL
 

Function Documentation

◆ zero_page()

static phyframe_t * zero_page ( void )
static

Definition at line 22 of file cow.c.

Referenced by cow_zod_fault_handler().

+ Here is the call graph for this function:

◆ cow_zod_fault_handler()

static vmfault_result_t cow_zod_fault_handler ( vmap_t * vmap,
ptr_t fault_addr,
pagefault_t * info )
static

Definition at line 34 of file cow.c.

Referenced by cow_allocate_zeroed_pages(), and cow_clone_vmap_locked().

+ Here is the call graph for this function:

◆ cow_clone_vmap_locked()

vmap_t * cow_clone_vmap_locked ( mm_context_t * target_mmctx,
vmap_t * source_vmap )

Copy-on-write a page range.

Parameters
target_mmctxThe mm context to copy to
source_vmapThe vmap to copy from
Returns
vmap_t* The new vmap, with the lock held

Definition at line 62 of file cow.c.

Referenced by process_do_fork().

+ Here is the call graph for this function:

◆ cow_allocate_zeroed_pages()

vmap_t * cow_allocate_zeroed_pages ( mm_context_t * handle,
size_t npages,
ptr_t vaddr,
valloc_flags hints,
vm_flags flags )

Allocate zero-on-demand pages at a specific address.

Parameters
handleThe paging handle to use
npagesThe number of pages to allocate
vaddrThe virtual address to allocate at
hintsAllocation hints, see valloc_flags
flagsVM flags to use
Returns
vmblock_t The allocated block

Definition at line 79 of file cow.c.

Referenced by mmap_anonymous(), process_do_execveat(), and thread_new().

+ Here is the call graph for this function:

Variable Documentation

◆ _zero_page

phyframe_t* _zero_page = NULL
static

Definition at line 21 of file cow.c.

Referenced by zero_page().