summaryrefslogtreecommitdiff
path: root/src/stem/mem/paging.h
diff options
context:
space:
mode:
authorAlexis211 <alexis211@gmail.com>2010-02-05 17:33:08 +0100
committerAlexis211 <alexis211@gmail.com>2010-02-05 17:33:08 +0100
commit674014901a1e90ce1587a7709fe9bf5893b0e36e (patch)
tree0696d09e4a185413df75f8e3ef413b5ae81a090d /src/stem/mem/paging.h
parent6d849bc12d6afe2fe239c5a7dc581ba76d67974b (diff)
downloadTCE-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.h5
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