UnnamedOS
vmm.h File Reference
#include <stdint.h>
#include <mem/pmm.h>
+ Include dependency graph for vmm.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  page_directory_entry_t
 An entry in a page directory. More...
 
struct  page_table_entry_t
 An entry in a page table. More...
 

Macros

#define VMM_PAGEDIR   ((page_directory_t*) 0xFFFFF000)
 the active page directory's address More...
 
#define VMM_PAGETAB(i)   ((page_table_t*) (0xFFC00000 + (i) * PAGE_SIZE))
 the address of a page table from the active page directory More...
 

Typedefs

typedef page_directory_entry_t page_directory_t
 a page directory is a pointer to its first entry
 
typedef page_table_entry_t page_table_t
 a page table is a pointer to its first entry
 

Enumerations

enum  vmm_flags_t { VMM_KERNEL = 0b0, VMM_USER = 0b1, VMM_WRITABLE = 0b100 }
 Whether we are working with kernel or user memory. More...
 

Functions

page_directory_tvmm_create_page_directory ()
 Creates an empty page directory. More...
 
void vmm_destroy_page_directory (page_directory_t *dir_phys)
 Destroys a page directory. More...
 
page_directory_tvmm_load_page_directory (page_directory_t *new_directory)
 Loads a new page directory. More...
 
void vmm_modify_page_directory (page_directory_t *new_directory)
 Loads a page directory for temporary modification. More...
 
void vmm_modified_page_directory ()
 Ends a page directory modification. More...
 
uint8_t vmm_map (void *_vaddr, void *paddr, vmm_flags_t flags)
 Maps the given page into memory. More...
 
void vmm_unmap (void *_vaddr)
 Unmaps the given page from memory. More...
 
void vmm_map_range (void *vaddr, void *paddr, size_t len, vmm_flags_t flags)
 Maps the given page(s) into memory. More...
 
void vmm_unmap_range (void *vaddr, size_t len)
 Unmaps the given page(s) from memory. More...
 
void * vmm_get_physical_address (void *_vaddr)
 Translates a virtual address into a physical address. More...
 
void vmm_dump ()
 Dumps the current page directory. More...
 
void * vmm_map_physical_memory (void *paddr, size_t len, vmm_flags_t flags)
 If necessary, maps the given page(s) somewhere into memory. More...
 
void vmm_unmap_physical_memory (void *vaddr, size_t len)
 If necessary, unmaps the given page(s) from memory. More...
 
void vmm_use (void *vaddr, void *paddr, size_t len, vmm_flags_t flags)
 Marks the given page(s) as used and maps them into memory. More...
 
void * vmm_use_physical_memory (void *paddr, size_t len, vmm_flags_t flags)
 Marks the given page(s) as used and maps them somewhere into memory. More...
 
void * vmm_use_virtual_memory (void *vaddr, size_t len, vmm_flags_t flags)
 Marks some page(s) as used and maps them into memory. More...
 
void * vmm_alloc (size_t len, vmm_flags_t flags)
 Marks some page(s) as used and maps them somewhere into memory. More...
 
void vmm_free (void *vaddr, size_t len)
 Frees the given page(s) and unmaps them from memory. More...
 
void vmm_enable_domain_check (uint8_t enable)
 Enables or disables domain checking. More...
 
void vmm_init ()
 Initializes the VMM. More...