diff options
author | Alexis211 <alexis211@gmail.com> | 2010-02-05 17:33:08 +0100 |
---|---|---|
committer | Alexis211 <alexis211@gmail.com> | 2010-02-05 17:33:08 +0100 |
commit | 674014901a1e90ce1587a7709fe9bf5893b0e36e (patch) | |
tree | 0696d09e4a185413df75f8e3ef413b5ae81a090d /src/stem/mem/paging.h | |
parent | 6d849bc12d6afe2fe239c5a7dc581ba76d67974b (diff) | |
download | TCE-674014901a1e90ce1587a7709fe9bf5893b0e36e.tar.gz TCE-674014901a1e90ce1587a7709fe9bf5893b0e36e.zip |
Start work on syscalls, advanced tasking, segmentation
Diffstat (limited to 'src/stem/mem/paging.h')
-rw-r--r-- | src/stem/mem/paging.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/stem/mem/paging.h b/src/stem/mem/paging.h index 72078cf..9ee6c4c 100644 --- a/src/stem/mem/paging.h +++ b/src/stem/mem/paging.h @@ -18,10 +18,12 @@ 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; @@ -32,11 +34,12 @@ 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 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 +uint32_t paging_fault(struct registers *regs); //returns a boolean : 1 if unhandled, 0 if ok #endif |