Iros
 
Loading...
Searching...
No Matches
iris::mm Namespace Reference

Namespaces

namespace  detail
 

Classes

class  AddressSpace
 
struct  AddressSpaceRegionListTag
 
struct  BackedPhysicalPage
 A physical page of memory tracked by a backing object. More...
 
struct  BackedPhysicalPagePtrTag
 
struct  BackedPhysicalPageTreeTag
 
class  BackingObject
 
class  LockedAddressSpace
 
class  LockedBackingObject
 
struct  PageStructurePhysicalPage
 A physical page of memory used for the page tables themselves. More...
 
struct  PhysicalAddressMapping
 
struct  PhysicalAddressTag
 
struct  PhysicalPage
 A physical page of memory. More...
 
class  Region
 
struct  TempPage
 
struct  VirtualAddressTag
 

Typedefs

using PhysicalAddress = di::StrongInt<PhysicalAddressTag>
 
using VirtualAddress = di::StrongInt<VirtualAddressTag>
 

Enumerations

enum class  RegionFlags {
  None = 0 , Readable = 1 , Writable = 2 , Executable = 4 ,
  User = 8
}
 

Functions

auto create_empty_user_address_space () -> Expected< di::Arc< AddressSpace > >
 
auto map_physical_address (PhysicalAddress address, usize byte_size) -> Expected< PhysicalAddressMapping >
 
auto init_and_load_initial_kernel_address_space (PhysicalAddress kernel_physical_start, VirtualAddress kernel_virtual_start, PhysicalAddress max_physical_address) -> Expected< void >
 
auto map_temp_page () -> Expected< TempPage >
 
void unmap_temp_page (void *)
 
void reserve_page_frames (PhysicalAddress base_address, usize page_count)
 
void unreserve_page_frames (PhysicalAddress base_address, usize page_count)
 
auto allocate_page_frame () -> Expected< PhysicalAddress >
 
auto allocate_physically_contiguous_page_frames (usize page_count) -> Expected< PhysicalAddress >
 
void deallocate_page_frame (PhysicalAddress)
 
auto physical_page (PhysicalAddress address) -> PhysicalPage &
 
auto page_structure_page (PhysicalAddress address) -> PageStructurePhysicalPage &
 
auto backed_page (PhysicalAddress address) -> BackedPhysicalPage &
 

Variables

constexpr auto physical_page_base
 
constexpr auto physical_address = detail::PhysicalAddressFunction {}
 
constexpr auto bump_page = detail::BumpPage {}
 
constexpr auto drop_page = iris::mm::detail::DropPageFunction {}
 
constexpr usize physical_page_count = 4LLU * 1024U * 1024U * 1024U / 4096U
 

Typedef Documentation

◆ PhysicalAddress

◆ VirtualAddress

Enumeration Type Documentation

◆ RegionFlags

enum class iris::mm::RegionFlags
strong
Enumerator
None 
Readable 
Writable 
Executable 
User 

Function Documentation

◆ allocate_page_frame()

auto iris::mm::allocate_page_frame ( ) -> Expected<PhysicalAddress>

◆ allocate_physically_contiguous_page_frames()

auto iris::mm::allocate_physically_contiguous_page_frames ( usize page_count) -> Expected<PhysicalAddress>

◆ backed_page()

auto iris::mm::backed_page ( PhysicalAddress address) -> BackedPhysicalPage&
inline

◆ create_empty_user_address_space()

auto iris::mm::create_empty_user_address_space ( ) -> Expected< di::Arc< AddressSpace > >

◆ deallocate_page_frame()

void iris::mm::deallocate_page_frame ( PhysicalAddress address)

◆ init_and_load_initial_kernel_address_space()

auto iris::mm::init_and_load_initial_kernel_address_space ( PhysicalAddress kernel_physical_start,
VirtualAddress kernel_virtual_start,
PhysicalAddress max_physical_address ) -> Expected<void>

◆ map_physical_address()

auto iris::mm::map_physical_address ( PhysicalAddress address,
usize byte_size ) -> Expected< PhysicalAddressMapping >

◆ map_temp_page()

auto iris::mm::map_temp_page ( ) -> Expected< TempPage >

◆ page_structure_page()

auto iris::mm::page_structure_page ( PhysicalAddress address) -> PageStructurePhysicalPage&
inline

◆ physical_page()

auto iris::mm::physical_page ( PhysicalAddress address) -> PhysicalPage&
inline

◆ reserve_page_frames()

void iris::mm::reserve_page_frames ( PhysicalAddress base_address,
usize page_count )

◆ unmap_temp_page()

void iris::mm::unmap_temp_page ( void * )

◆ unreserve_page_frames()

void iris::mm::unreserve_page_frames ( PhysicalAddress base_address,
usize page_count )

Variable Documentation

◆ bump_page

auto iris::mm::bump_page = detail::BumpPage {}
inlineconstexpr

◆ drop_page

auto iris::mm::drop_page = iris::mm::detail::DropPageFunction {}
inlineconstexpr

◆ physical_address

auto iris::mm::physical_address = detail::PhysicalAddressFunction {}
inlineconstexpr

◆ physical_page_base

auto iris::mm::physical_page_base
inlineconstexpr
Initial value:
=
VirtualAddress(0xFFFF800000000000_u64 + 4096_u64 * 512_u64 * 512_u64 * 512_u64)
di::StrongInt< VirtualAddressTag > VirtualAddress
Definition virtual_address.h:25

◆ physical_page_count

usize iris::mm::physical_page_count = 4LLU * 1024U * 1024U * 1024U / 4096U
constexpr