# Unit vmemorymanager

Description
Uses
Classes, Interfaces, Objects and Records
Functions and Procedures
Types
Constants
Variables

## Description

`VMemoryManager` - Virtual Memory Management.

## Uses

- util
- pmemorymanager
- console
- tracer

## Overview

### Functions and Procedures

`procedure init;`
`function new_page(page_number : uint16) : boolean;`
`function map_page(page_number : uint16; block : uint16) : boolean;`
`function map_page_ex(page_number : uint16; block : uint16; PD : PPageDirectory) : boolean;`
`function new_page_at_address(address : uint32) : boolean;`
`procedure free_page(page_number : uint16);`
`procedure free_page_at_address(address : uint32);`
`function new_page_directory : uint32;`
`function new_kernel_mapped_page_directory : uint32;`
`function vtop(address : uint32) : uint32;`

### Types

`PPageDirEntry = ˆTPageDirEntry;`
`TPageDirEntry = bitpacked record Present, Writable, UserMode, WriteThrough, NotCacheable, Accessed, Reserved, PageSize, GlobalPage: Boolean; Available: UBit3; Address: UBit20; end;`
`TPageDirectory = Array[0..1023] of TPageDirEntry;`
`PPageDirectory = ˆTPageDirectory;`

### Variables

`KERNEL_PAGE_DIRECTORY: PPageDirectory;`
`PageDirectory: PPageDirectory;`

## Description

### Functions and Procedures

`procedure init;`

`function new_page(page_number : uint16) : boolean;`

`function map_page(page_number : uint16; block : uint16) : boolean;`

`function map_page_ex(page_number : uint16; block : uint16; PD : PPageDirectory) : boolean;`

`function new_page_at_address(address : uint32) : boolean;`

`procedure free_page(page_number : uint16);`

`procedure free_page_at_address(address : uint32);`

`function new_page_directory : uint32;`

`function new_kernel_mapped_page_directory : uint32;`

`function vtop(address : uint32) : uint32;`

### Types

`PPageDirEntry = ˆTPageDirEntry;`

`TPageDirEntry = bitpacked record Present, Writable, UserMode, WriteThrough, NotCacheable, Accessed, Reserved, PageSize, GlobalPage: Boolean; Available: UBit3; Address: UBit20; end;`

`TPageDirectory = Array[0..1023] of TPageDirEntry;`

`PPageDirectory = ˆTPageDirectory;`

### Variables

`KERNEL_PAGE_DIRECTORY: PPageDirectory;`

`PageDirectory: PPageDirectory;`

## Author

- Kieron Morris <kjm@kieronmorris.me>

Generated by PasDoc 0.15.0.