Phoenix
Object-oriented orthogonally persistent operating system
Public Types | Public Member Functions | Static Public Member Functions
vm::MM Class Reference

This class represents kernel virtual memory manager. More...

#include <vm_mm.h>

Collaboration diagram for vm::MM:

List of all members.

Public Types

enum  InitState { IS_INITIAL, IS_PREINITIALIZED, IS_INITIALIZING, IS_INITIALIZED }
 State of kernel memory management initialization. More...

Public Member Functions

Vaddr PhysToVirt (Paddr pa)
 Convert physical address to corresponding virtual address in persistent physical memory mapping.
PageGetPage (Paddr pa)
 Get physical page descriptor by the page physical address.

Static Public Member Functions

static InitState GetInitState ()
 Get current initialization state.
static void PreInitialize (vaddr_t heap, paddr_t defaultLatRoot, vaddr_t quickMap, void **quickMapPte)
 Pre-initialize memory management.
static void Initialize (void *memMap, size_t memMapNumDesc, size_t memMapDescSize, u32 memMapDescVersion)
 Finalize kernel memory management initialization.

Detailed Description

This class represents kernel virtual memory manager.


Member Enumeration Documentation

State of kernel memory management initialization.

Enumerator:
IS_INITIAL 

Very initial state, nothing is initialized, memory allocations not possible.

IS_PREINITIALIZED 

Pre-initialized state, memory manager object is not yet created, but memory allocations are already possible.

IS_INITIALIZING 

Memory manager initialization is in progress.

Memory allocations are not permitted during this state.

IS_INITIALIZED 

Initialized state, memory manager object is created and fully functional.


Member Function Documentation

static InitState vm::MM::GetInitState ( ) [inline, static]

Get current initialization state.

Page& vm::MM::GetPage ( Paddr  pa) [inline]

Get physical page descriptor by the page physical address.

Parameters:
paPhysical address of the page.
Returns:
Reference to the physical page descriptor.
void MM::Initialize ( void *  memMap,
size_t  memMapNumDesc,
size_t  memMapDescSize,
u32  memMapDescVersion 
) [static]

Finalize kernel memory management initialization.

Parameters:
memMapEFI memory map which describes all available memory.
memMapNumDescNumber of descriptors in memMap.
memMapDescSizeOne descriptor size in memMap.
memMapDescVersionDescriptor version in memMap.
Vaddr vm::MM::PhysToVirt ( Paddr  pa) [inline]

Convert physical address to corresponding virtual address in persistent physical memory mapping.

Parameters:
paPhysical address to convert.
Returns:
Virtual address which can be used to access data on physical address pa.
void MM::PreInitialize ( vaddr_t  heap,
paddr_t  defaultLatRoot,
vaddr_t  quickMap,
void **  quickMapPte 
) [static]

Pre-initialize memory management.

This method should be called before any memory allocations can be performed in the kernel. This method does not return any value. It will either succeed or cause system fault in case of failure.

Parameters:
heapCurrent heap pointer.
defaultLatRootDefault LAT root table.
quickMapQuick map pages. They are allocated consequentially.
quickMapPteQuick map PTEs.

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines