MyOS Kernel
paging.h
Go to the documentation of this file.
1 
5 #ifndef PAGING_H
6 #define PAGING_H
7 
8 #include <stddef.h>
9 
15 #define RUN_IN_ADDRESS_SPACE(addr_space,codeblock) do { \
16  void* old_address_space=get_address_space(); \
17  load_address_space(addr_space); \
18  codeblock; \
19  load_address_space(old_address_space); \
20 } while(0);
21 
22 
31 void map_pages(void* virt_addr_ptr,void* phys_addr_ptr,int num_pages,char usr,char wr);
38 void unmap_pages(void* start_virt,int num_pages, int free_phys);
44 void* alloc_pages(int num_pages);
50 void alloc_pages_virt(int num_pages,void* addr);
56 void dealloc_pages(int num_pages,void* addr);
57 
61 void paging_init();
71 void load_address_space(void* address_space);
77 void* virt_to_phys(void* virt_addr);
83 void* find_free_pages(int num_pages);
84 
89 void* get_address_space();
90 
96 char is_page_present(size_t page);
97 
98 #endif
void alloc_pages_virt(int num_pages, void *addr)
Definition: paging.c:141
void * find_free_pages(int num_pages)
Definition: paging.c:76
void map_pages(void *virt_addr_ptr, void *phys_addr_ptr, int num_pages, char usr, char wr)
Definition: paging.c:46
char is_page_present(size_t page)
Definition: paging.c:37
void paging_init()
Definition: paging.c:193
void * alloc_pages(int num_pages)
Definition: paging.c:121
void dealloc_pages(int num_pages, void *addr)
Definition: paging.c:237
void * get_address_space()
Definition: paging.c:231
void * paging_new_address_space()
Definition: paging.c:153
void unmap_pages(void *start_virt, int num_pages, int free_phys)
Definition: paging.c:172
void load_address_space(void *address_space)
Definition: paging.c:168
void * virt_to_phys(void *virt_addr)
Definition: paging.c:127