550W Document
550W, a high-end OS
mm.h 文件参考
#include <common/types.h>
mm.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

宏定义

#define FS_KERNEL_ADDR   0xffffffc084000000lu
 
#define START_BLOCK   2000
 
#define MEM_SIZE   32
 
#define PAGE_SIZE   4096
 
#define INIT_KERNEL_STACK   0xffffffc081000000lu
 
#define FREEMEM   (INIT_KERNEL_STACK + PAGE_SIZE * 10)
 
#define FREEMEMK   0xffffffc083000000lu
 
#define USER_STACK_ADDR   0xf00010000lu
 
#define PROT_NONE   0
 
#define PROT_READ   1
 
#define PROT_WRITE   2
 
#define PROT_EXEC   4
 
#define PROT_GROWSDOWN   0X01000000
 
#define PROT_GROWSUP   0X02000000
 
#define MAP_FILE   0
 
#define MAP_SHARED   0x01
 
#define MAP_PRIVATE   0X02
 
#define MAP_FAILED   ((void *)-1)
 
#define MAP_KERNEL   1
 
#define MAP_USER   2
 

类型定义

typedef uint64_t PTE
 

函数

void k_mm_move_to_disk (uint64_t pg_kva, uint64_t user_va)
 
void k_mm_get_back_disk (uint64_t va, uint64_t new_addr)
 
void k_mm_en_invalid (uint64_t pa_kva, 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_fork_pgtable (PTE *dest_pgdir, PTE *src_pgdir)
 
void k_mm_fork_page_helper (uintptr_t va, PTE *destpgdir, PTE *srcpgdir)
 
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 k_mm_free_page (ptr_t baseAddr, int numPage)
 
void * k_mm_malloc (size_t size)
 
void k_mm_share_pgtable (PTE *dest_pgdir, PTE *src_pgdir)
 
uintptr_t k_mm_alloc_page_helper (uintptr_t va, PTE *pgdir)
 
long k_mm_shm_page_get (int key)
 
long k_mm_shm_page_dt (uintptr_t addr)
 
void k_mm_map (uint64_t va, uint64_t pa, PTE *pgdir)
 
void k_mm_getback_page (int pid)
 
PTEk_mm_get_kva (PTE entry)
 
void k_mm_cancel_pg (PTE *pgdir)
 
uint64_t k_mm_alloc_newva ()
 
long sys_brk (unsigned long brk)
 

变量

ptr_t memCurr
 
int diskpg_num
 
uint64_t diskpg [1000]
 

宏定义说明

◆ FREEMEM

#define FREEMEM   (INIT_KERNEL_STACK + PAGE_SIZE * 10)

◆ FREEMEMK

#define FREEMEMK   0xffffffc083000000lu

◆ FS_KERNEL_ADDR

#define FS_KERNEL_ADDR   0xffffffc084000000lu

◆ INIT_KERNEL_STACK

#define INIT_KERNEL_STACK   0xffffffc081000000lu

◆ MAP_FAILED

#define MAP_FAILED   ((void *)-1)

◆ MAP_FILE

#define MAP_FILE   0

◆ MAP_KERNEL

#define MAP_KERNEL   1

◆ MAP_PRIVATE

#define MAP_PRIVATE   0X02

◆ MAP_SHARED

#define MAP_SHARED   0x01

◆ MAP_USER

#define MAP_USER   2

◆ MEM_SIZE

#define MEM_SIZE   32

◆ PAGE_SIZE

#define PAGE_SIZE   4096

◆ PROT_EXEC

#define PROT_EXEC   4

◆ PROT_GROWSDOWN

#define PROT_GROWSDOWN   0X01000000

◆ PROT_GROWSUP

#define PROT_GROWSUP   0X02000000

◆ PROT_NONE

#define PROT_NONE   0

◆ PROT_READ

#define PROT_READ   1

◆ PROT_WRITE

#define PROT_WRITE   2

◆ START_BLOCK

#define START_BLOCK   2000

◆ USER_STACK_ADDR

#define USER_STACK_ADDR   0xf00010000lu

类型定义说明

◆ PTE

typedef uint64_t PTE

函数说明

◆ 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  pa_kva,
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  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)

◆ sys_brk()

long sys_brk ( unsigned long  brk)

变量说明

◆ diskpg

uint64_t diskpg
extern

◆ diskpg_num

int diskpg_num
extern

◆ memCurr

ptr_t memCurr
extern