[][src]Module sunrise_bootstrap::paging

Paging on i386

Modules

entry

i386 page table entry

table

i386 page table / directory

Structs

ActivePageTables

The page tables set currently in use.

EntryFlags

The flags of a table entry

InactivePageTables

A set of PageTables that are not the ones currently in use. We can't use recursive mapping to modify them, so instead we have to temporarily map the directory and tables to make changes to them.

KernelLand

The virtual memory belonging to kernel.

PagingOffPageSet

Used at startup when paging is off to create and initialized the first page tables

UserLand

The virtual memory belonging to user.

Enums

MappingType

The type of a Virtual Memory mapping. Can either be Present, in which case it is linked to a Frame and some flags, or Guard.

Constants

ENTRY_COUNT
PAGE_SIZE

The size of a single page.

Statics

ACTIVE_PAGE_TABLES

Currently active page tables.

Traits

PageTablesSet
VirtualSpaceLand

A trait describing the splitting of virtual memory between Kernel and User. Implemented by UserLand and KernelLand

Functions

enable_paging
flush_tlb

Flush the Translation Lookaside Buffer [https://wiki.osdev.org/TLB]

get_page

Creates a mapping in the page tables with the given flags. Allocates the pointed page and chooses the virtual address.

is_paging_on

Check if the paging is currently active.

map_bootstrap

Creates a set of page tables identity mapping the Bootstrap.

swap_cr3

Changes the content of the cr3 register, and returns the value before the change was made