diff options
Diffstat (limited to 'src/stem/mem/paging.h')
-rw-r--r-- | src/stem/mem/paging.h | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/src/stem/mem/paging.h b/src/stem/mem/paging.h deleted file mode 100644 index cb76cd6..0000000 --- a/src/stem/mem/paging.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef DEF_PAGING_H -#define DEF_PAGING_H - -#include <types.h> -#include <task/idt.h> - -struct page { - uint32_t present : 1; //Page mapped to a frame ? - uint32_t rw : 1; //Page read/write ? - uint32_t user : 1; //Page user readable ? - uint32_t accessed : 1; //Was page accessed ? - uint32_t dirty : 1; //Was page modified ? - uint32_t unused : 7; - uint32_t frame : 20; //Frame address (physical address) -}; - -struct page_table { - struct page pages[1024]; -}; - -struct segment_map; -struct page_directory { - struct page_table *tables[1024]; //Virtual addresses of page tables - uint32_t *tablesPhysical; //Pointer to the virtual address of the page directory (contain phys addr of pt) - uint32_t physicalAddr; //Physical address of info above - struct segment_map *mappedSegs; -}; - -extern struct page_directory *kernel_pagedir; - -uint32_t frame_alloc(); -void frame_free(uint32_t id); - -void paging_init(size_t totalRam); -void paging_cleanup(); -void pagedir_switch(struct page_directory *pd); -struct page_directory *pagedir_new(); //Creates a brand new empty page directory for a process, with kernel pages -void pagedir_delete(struct page_directory *pagedir); -struct page *pagedir_getPage(struct page_directory *pd, uint32_t address, int make); -void page_map(struct page *page, uint32_t frame, uint32_t user, uint32_t rw); -void page_unmap(struct page *page); -void page_unmapFree(struct page *page); - -uint32_t paging_fault(struct registers *regs); //returns a boolean : 1 if unhandled, 0 if ok - -#endif |