550W Document
550W, a high-end OS
mm.c 文件参考
#include <asm/pgtable.h>
#include <asm/sbi.h>
#include <common/elf.h>
#include <drivers/screen/screen.h>
#include <lib/assert.h>
#include <lib/math.h>
#include <os/mm.h>
#include <os/pcb.h>
#include <os/smp.h>
mm.c 的引用(Include)关系图:

struct  shm
 

宏定义

#define MAXPAGES   1000
 
#define STARTPAGE   30
 

函数

PTEk_mm_get_kva (PTE entry)
 
void k_mm_getback_page (int pid)
 
void k_mm_move_to_disk (uint64_t pg_kva, uint64_t user_va)
 
void k_mm_get_back_disk (uint64_t user_va, uint64_t new_addr)
 
void k_mm_en_invalid (uint64_t va, PTE *pgdir)
 
ptr_t k_mm_alloc_mem (int numPage, uint64_t user_va)
 
ptr_t k_mm_alloc_page (int numPage)
 
void k_mm_free_page (ptr_t baseAddr, int numPage)
 
void * k_mm_malloc (size_t size)
 
uint64_t k_mm_alloc_newva ()
 
long k_mm_shm_page_get (int key)
 
long k_mm_shm_page_dt (uintptr_t addr)
 
void k_mm_share_pgtable (PTE *dest_pgdir, PTE *src_pgdir)
 
void k_mm_fork_pgtable (PTE *dest_pgdir, PTE *src_pgdir)
 
void k_mm_fork_page_helper (uintptr_t va, PTE *destpgdir, PTE *srcpgdir)
 
uintptr_t k_mm_alloc_page_helper (uintptr_t va, PTE *pgdir)
 
uint64_t k_mm_get_kva_from_va (uint64_t va, PTE *pgdir)
 
long k_mm_getpa (uint64_t va)
 
void k_mm_map_kp (uint64_t va, uint64_t pa, PTE *pgdir)
 
void map_fs_space ()
 
void k_mm_map (uint64_t va, uint64_t pa, PTE *pgdir)
 
void k_mm_cancel_pg (PTE *pgdir)
 
uint32_t check_page_map (uintptr_t vta, uintptr_t pgdir)
 
uintptr_t free_page_helper (uintptr_t va, uintptr_t pgdir)
 
long sys_brk (unsigned long brk)
 

变量

ptr_t memCurr = FREEMEM
 
ptr_t k_mem = FREEMEMK
 
int diskpg_num = 0
 
int freepg_num = 0
 
uint64_t diskpg [1000]
 
uint64_t freepg [1000]
 
uint64_t allpg [20][MAXPAGES]
 
uint64_t allmem [20][MAXPAGES]
 
uint64_t alluserva [20][100]
 
int shm_num = 0
 
struct shm shm_all [10]
 

宏定义说明

◆ MAXPAGES

#define MAXPAGES   1000

◆ STARTPAGE

#define STARTPAGE   30

函数说明

◆ check_page_map()

uint32_t check_page_map ( uintptr_t  vta,
uintptr_t  pgdir 
)

◆ free_page_helper()

uintptr_t free_page_helper ( uintptr_t  va,
uintptr_t  pgdir 
)

◆ k_mm_alloc_mem()

ptr_t k_mm_alloc_mem ( int  numPage,
uint64_t  user_va 
)

◆ k_mm_alloc_newva()

uint64_t k_mm_alloc_newva ( )

◆ k_mm_alloc_page()

ptr_t k_mm_alloc_page ( int  numPage)

◆ k_mm_alloc_page_helper()

uintptr_t k_mm_alloc_page_helper ( uintptr_t  va,
PTE pgdir 
)

◆ k_mm_cancel_pg()

void k_mm_cancel_pg ( PTE pgdir)

◆ k_mm_en_invalid()

void k_mm_en_invalid ( uint64_t  va,
PTE pgdir 
)

◆ k_mm_fork_page_helper()

void k_mm_fork_page_helper ( uintptr_t  va,
PTE destpgdir,
PTE srcpgdir 
)

◆ k_mm_fork_pgtable()

void k_mm_fork_pgtable ( PTE dest_pgdir,
PTE src_pgdir 
)

◆ k_mm_free_page()

void k_mm_free_page ( ptr_t  baseAddr,
int  numPage 
)

◆ k_mm_get_back_disk()

void k_mm_get_back_disk ( uint64_t  user_va,
uint64_t  new_addr 
)

◆ k_mm_get_kva()

PTE* k_mm_get_kva ( PTE  entry)

◆ k_mm_get_kva_from_va()

uint64_t k_mm_get_kva_from_va ( uint64_t  va,
PTE pgdir 
)

◆ k_mm_getback_page()

void k_mm_getback_page ( int  pid)

◆ k_mm_getpa()

long k_mm_getpa ( uint64_t  va)

◆ k_mm_malloc()

void* k_mm_malloc ( size_t  size)

◆ k_mm_map()

void k_mm_map ( uint64_t  va,
uint64_t  pa,
PTE pgdir 
)

◆ k_mm_map_kp()

void k_mm_map_kp ( uint64_t  va,
uint64_t  pa,
PTE pgdir 
)

◆ k_mm_move_to_disk()

void k_mm_move_to_disk ( uint64_t  pg_kva,
uint64_t  user_va 
)

◆ k_mm_share_pgtable()

void k_mm_share_pgtable ( PTE dest_pgdir,
PTE src_pgdir 
)

◆ k_mm_shm_page_dt()

long k_mm_shm_page_dt ( uintptr_t  addr)

◆ k_mm_shm_page_get()

long k_mm_shm_page_get ( int  key)

◆ map_fs_space()

void map_fs_space ( )

◆ sys_brk()

long sys_brk ( unsigned long  brk)

变量说明

◆ allmem

uint64_t allmem[20][MAXPAGES]

◆ allpg

uint64_t allpg[20][MAXPAGES]

◆ alluserva

uint64_t alluserva[20][100]

◆ diskpg

uint64_t diskpg[1000]

◆ diskpg_num

int diskpg_num = 0

◆ freepg

uint64_t freepg[1000]

◆ freepg_num

int freepg_num = 0

◆ k_mem

ptr_t k_mem = FREEMEMK

◆ memCurr

ptr_t memCurr = FREEMEM

◆ shm_all

struct shm shm_all[10]

◆ shm_num

int shm_num = 0