| Turnstone Operating System
    | 
Paging implementation for x86_64 architecture. More...
#include <types.h>#include <memory.h>#include <memory/frame.h>#include <memory/paging.h>#include <cpu.h>#include <cpu/crx.h>#include <systeminfo.h>#include <logging.h>#include <linker.h>#include <cpu/descriptor.h>#include <hashmap.h>| Functions | |
| MODULE ("turnstone.kernel.memory.paging") | |
| uint64_t | memory_paging_get_internal_frame (memory_page_table_context_t *table_context) | 
| static void | memory_paging_internal_frame_build (memory_page_table_context_t *table_context) | 
| memory_page_table_context_t * | memory_paging_switch_table (const memory_page_table_context_t *new_table) | 
| switches p4 page table | |
| int8_t | memory_paging_add_page_ext (memory_page_table_context_t *table_context, uint64_t virtual_address, uint64_t frame_address, memory_paging_page_type_t type) | 
| creates virtual address frame mapping with adding page | |
| int8_t | memory_paging_reserve_current_page_table_frames (void) | 
| memory_page_table_context_t * | memory_paging_build_empty_table (uint64_t internal_frame_address) | 
| int8_t | memory_paging_clear_page_ext (memory_page_table_context_t *table_context, uint64_t virtual_address, memory_paging_clear_type_t type) | 
| int8_t | memory_paging_toggle_attributes_ext (memory_page_table_context_t *table_context, uint64_t virtual_address, memory_paging_page_type_t type) | 
| int8_t | memory_paging_set_user_accessible_ext (memory_page_table_context_t *table_context, uint64_t virtual_address) | 
| int8_t | memory_paging_delete_page_ext_with_heap (memory_page_table_context_t *table_context, uint64_t virtual_address, uint64_t *frame_address) | 
| int8_t | memory_paging_get_physical_address_ext (memory_page_table_context_t *table_context, uint64_t virtual_address, uint64_t *physical_address) | 
| int8_t | memory_paging_add_va_for_frame_ext (memory_page_table_context_t *table_context, uint64_t va_start, frame_t *frm, memory_paging_page_type_t type) | 
| int8_t | memory_paging_delete_va_for_frame_ext (memory_page_table_context_t *table_context, uint64_t va_start, frame_t *frm) | 
| Variables | |
| hashmap_t * | memory_paging_page_tables = NULL | 
Paging implementation for x86_64 architecture.
This work is licensed under TURNSTONE OS Public License. Please read and understand latest version of Licence.
| int8_t memory_paging_add_page_ext | ( | memory_page_table_context_t * | p4, | 
| uint64_t | virtual_address, | ||
| uint64_t | frame_address, | ||
| memory_paging_page_type_t | type ) | 
creates virtual address frame mapping with adding page
| heap | the heap where variables will be created in | 
| p4 | p4 page table | 
| virtual_address | virtual start address of page | 
| frame_address | frame address of page links | 
| type | page type, see also memory_paging_page_type_t | 
if heap is NULL, the pages created in default heap
| memory_page_table_context_t * memory_paging_switch_table | ( | const memory_page_table_context_t * | new_table | ) | 
switches p4 page table
| [in] | new_table | new p4 table | 
change value of cr3 register. if new_table is NULL returns only current table