UbixOS
2.0
|
Go to the source code of this file.
Data Structures | |
struct | freebsd6_mmap_args |
struct | mMap |
Macros | |
#define | memAvail 1 |
#define | memNotavail 2 |
#define | STACK_ADDR 0xBFFFFFFF |
#define | VMM_KERN_CODE_END 0x007FEFFF |
#define | VMM_KERN_CODE_START 0x00000000 |
#define | VMM_KERN_END 0xFDFFFFFF |
#define | VMM_KERN_STACK_END 0xFFFFFFFF |
#define | VMM_KERN_STACK_START 0xFE000000 |
#define | VMM_KERN_START 0xC0800000 |
#define | VMM_MMAP_ADDR_PMODE VMM_KERN_START /* (PD_BASE_ADDR + PAGE_SIZE) */ |
#define | VMM_MMAP_ADDR_RMODE 0x101000 |
#define | VMM_PAGE_DIR 0xC0400000 |
#define | VMM_PAGE_DIRS 0xC0000000 |
#define | VMM_USER_END 0xBFFFFFFF |
#define | VMM_USER_LDT 0x007FF000 |
#define | VMM_USER_START 0x00800000 |
#define | vmmID -3 |
Enumerations | |
enum | unmapFlags_t { VMM_FREE = 0, VMM_KEEP = 1 } |
Functions | |
int | adjustCowCounter (uint32_t baseAddr, int adjustment) |
int | countMemory () |
int | freePage (uint32_t pageAddr) |
int | vmm_allocPageTable (uint32_t, pidType) |
uint32_t | vmm_findFreePage (pidType pid) |
void | vmm_freeProcessPages (pidType pid) |
int | vmm_init () |
int | vmm_memMapInit () |
void | vmm_unmapPage (uint32_t, unmapFlags_t) |
void | vmm_unmapPages (void *, uint32_t, unmapFlags_t) |
Variables | |
int | numPages |
struct spinLock | pdSpinLock |
mMap * | vmmMemoryMap |
#define VMM_MMAP_ADDR_PMODE VMM_KERN_START /* (PD_BASE_ADDR + PAGE_SIZE) */ |
enum unmapFlags_t |
int adjustCowCounter | ( | uint32_t | baseAddr, |
int | adjustment | ||
) |
Referenced by vmm_createVirtualSpace().
int countMemory | ( | ) |
Definition at line 109 of file vmm_memory.c.
References inportByte(), and outportByte().
Referenced by vmm_memMapInit().
int freePage | ( | uint32_t | pageAddr | ) |
Definition at line 262 of file vmm_memory.c.
References assert, spinLock(), and vmmMemoryMap.
Referenced by vmm_unmapPage().
Definition at line 7 of file vmm_allocpagetable.c.
References bzero, KERNEL_PAGE_DEFAULT, kpanic(), PAGE_DEFAULT, PAGE_PRESENT, PAGE_SIZE, PD_BASE_ADDR, PD_ENTRIES, PD_INDEX, PT_BASE_ADDR, vmm_findFreePage(), VMM_USER_END, and VMM_USER_START.
Referenced by vmm_getFreeKernelPage().
Definition at line 221 of file vmm_memory.c.
References kpanic(), spinLock(), and sysID.
Referenced by elf_load_file(), execFile(), freebsd6_mmap(), kmod_load(), ldEnable(), sys_mmap(), sysExec(), vmm_allocPageTable(), vmm_getFreeKernelPage(), and vmm_pagingInit().
void vmm_freeProcessPages | ( | pidType | pid | ) |
Definition at line 342 of file vmm_memory.c.
References PD_BASE_ADDR, and spinLock().
Referenced by systemTask().
int vmm_init | ( | ) |
Function: int vmm_init()
Description: Initializes the vmm subsystem
Notes:
Definition at line 43 of file vmm_init.c.
References K_PANIC, vmm_memMapInit(), and vmm_pagingInit().
int vmm_memMapInit | ( | ) |
Definition at line 57 of file vmm_memory.c.
References countMemory(), mMap::cowCounter, memNotavail, numPages, PAGE_SIZE, mMap::pageAddr, mMap::pid, mMap::status, VMM_MMAP_ADDR_RMODE, vmmID, and vmmMemoryMap.
Referenced by vmm_init().
void vmm_unmapPage | ( | uint32_t | , |
unmapFlags_t | |||
) |
Definition at line 47 of file unmappage.c.
References freePage(), PAGE_PRESENT, PD_BASE_ADDR, and PT_BASE_ADDR.
Referenced by sys_mmap(), and vmm_createVirtualSpace().
void vmm_unmapPages | ( | void * | , |
uint32_t | , | ||
unmapFlags_t | |||
) |
int numPages |
Definition at line 45 of file vmm_memory.c.
Referenced by vmm_memMapInit(), and vmm_pagingInit().
struct spinLock pdSpinLock |
Definition at line 33 of file vmm_init.c.
Referenced by vmm_getFreeKernelPage().
mMap* vmmMemoryMap |
Definition at line 47 of file vmm_memory.c.
Referenced by freePage(), vmm_memMapInit(), and vmm_pagingInit().