[][src]Module sunrise_kernel::paging::kernel_memory

The management of kernel memory

j-------------------------------j j---------------------j
|        Process Memory         | |    Kernel Memory    |
j-------------------------------j j---------------------j
                |                            |
    j-----------------------j                |
    | Userspace Bookkeeping |                |
    j-----------------------j                |
                |                            |
j--------------------------------+----------------~-----j
|           User Land            |   Kernel Land  | RTL |
j--------------------------------+----------------~-----j
                        Page tables

We choose to separate UserLand and KernelLand + RecursiveTablesLand memory management. This way we can allow concurrent access on different lands, and modifying the kernel memory directly accesses the active page tables, without need to lock the ProcessStruct.

This solves the problem of accessing the page tables in an early state, where there is no current process yet.

Structs

KernelMemory

A struct that acts on KernelLand and RecursiveTablesLand.

Statics

KERNEL_MEMORY

A mutex protecting the KernelMemory manager.

Functions

get_kernel_memory

Locks the KERNEL_MEMORY