L4Re Operating System Framework
Interface and Usage Documentation
Loading...
Searching...
No Matches
L4::Kip::Mem_desc Class Reference

Memory descriptors stored in the kernel interface page. More...

#include <kip>

+ Collaboration diagram for L4::Kip::Mem_desc:

Public Types

enum  Mem_type {
  Undefined = 0x0 , Conventional = 0x1 , Reserved = 0x2 , Dedicated = 0x3 ,
  Shared = 0x4 , Info = 0xd , Bootloader = 0xe , Arch = 0xf
}
 Memory types. More...
 
enum  Info_sub_type { Info_acpi_rsdp = 0 }
 Memory sub types for the Mem_type::Info type. More...
 
enum  Arch_sub_type_common { Arch_acpi_tables = 3 , Arch_acpi_nvs = 4 }
 Common sub types across all architectures for the Mem_type::Arch type. More...
 

Public Member Functions

 Mem_desc (unsigned long start, unsigned long end, Mem_type t, unsigned char st=0, bool virt=false, bool eager=false) noexcept
 Initialize memory descriptor.
 
unsigned long start () const noexcept
 Return start address of memory descriptor.
 
unsigned long end () const noexcept
 Return end address of memory descriptor.
 
unsigned long size () const noexcept
 Return size of region described by the memory descriptor.
 
Mem_type type () const noexcept
 Return type of the memory descriptor.
 
unsigned char sub_type () const noexcept
 Return sub-type of the memory descriptor.
 
unsigned is_virtual () const noexcept
 Return whether the memory descriptor describes a virtual or physical region.
 
unsigned eager_map () const noexcept
 Return whether the region shall be eligible for eager mapping in sigma0 or the root task.
 
void set (unsigned long start, unsigned long end, Mem_type t, unsigned char st=0, bool virt=false, bool eager=false) noexcept
 Set values of a memory descriptor.
 

Static Public Member Functions

static Mem_descfirst (void *kip) noexcept
 Get first memory descriptor.
 
static unsigned long count (void const *kip) noexcept
 Return number of memory descriptors stored in the kernel info page.
 
static void count (void *kip, unsigned count) noexcept
 Set number of memory descriptors.
 
static cxx::static_vector< Mem_desc const > all (void const *kip)
 Return enumerable list of memory descriptors.
 
static cxx::static_vector< Mem_descall (void *kip)
 Return enumerable list of memory descriptors.
 

Detailed Description

Memory descriptors stored in the kernel interface page.

Include File
#include <l4/sys/kip>

Definition at line 53 of file kip.

Member Enumeration Documentation

◆ Arch_sub_type_common

Common sub types across all architectures for the Mem_type::Arch type.

Enumerator
Arch_acpi_tables 

Firmware ACPI tables.

Arch_acpi_nvs 

Firmware reserved address space.

Definition at line 83 of file kip.

◆ Info_sub_type

Memory sub types for the Mem_type::Info type.

Enumerator
Info_acpi_rsdp 

Physical address of the ACPI root pointer.

Definition at line 75 of file kip.

◆ Mem_type

Memory types.

Enumerator
Undefined 

Undefined memory.

Conventional 

Conventional memory.

Reserved 

Reserved region, do not use this memory.

Dedicated 

Dedicated.

Shared 

Shared.

Info 

Info by boot loader.

Bootloader 

Memory belongs to the boot loader.

Arch 

Architecture specific memory.

Definition at line 59 of file kip.

Constructor & Destructor Documentation

◆ Mem_desc()

L4::Kip::Mem_desc::Mem_desc ( unsigned long  start,
unsigned long  end,
Mem_type  t,
unsigned char  st = 0,
bool  virt = false,
bool  eager = false 
)
inlinenoexcept

Initialize memory descriptor.

Parameters
startStart address
endEnd address
tMemory type
stMemory subtype, defaults to 0
virtTrue for virtual memory, false for physical memory, defaults to physical
eagerThe region shall be eligible for eager mapping in sigma0 or the root task. This is just an optimization to prevent on-demand paging.

Definition at line 179 of file kip.

Member Function Documentation

◆ all() [1/2]

static cxx::static_vector< Mem_desc > L4::Kip::Mem_desc::all ( void *  kip)
inlinestatic

Return enumerable list of memory descriptors.

Parameters
kipPointer to the kernel info page.

Definition at line 160 of file kip.

References count(), and first().

+ Here is the call graph for this function:

◆ all() [2/2]

static cxx::static_vector< Mem_desc const > L4::Kip::Mem_desc::all ( void const *  kip)
inlinestatic

Return enumerable list of memory descriptors.

Parameters
kipPointer to the kernel info page.

Definition at line 149 of file kip.

References count(), and first().

+ Here is the call graph for this function:

◆ count() [1/2]

static void L4::Kip::Mem_desc::count ( void *  kip,
unsigned  count 
)
inlinestaticnoexcept

Set number of memory descriptors.

Parameters
kipPointer to the kernel info page
countNumber of memory descriptors

Definition at line 138 of file kip.

References count().

+ Here is the call graph for this function:

◆ count() [2/2]

static unsigned long L4::Kip::Mem_desc::count ( void const *  kip)
inlinestaticnoexcept

Return number of memory descriptors stored in the kernel info page.

Parameters
kipPointer to the kernel info page
Returns
Number of memory descriptors in the kernel info page.

Definition at line 126 of file kip.

Referenced by all(), all(), and count().

+ Here is the caller graph for this function:

◆ end()

unsigned long L4::Kip::Mem_desc::end ( ) const
inlinenoexcept

Return end address of memory descriptor.

Returns
End address of memory descriptor

Definition at line 198 of file kip.

Referenced by set(), and size().

+ Here is the caller graph for this function:

◆ first()

static Mem_desc * L4::Kip::Mem_desc::first ( void *  kip)
inlinestaticnoexcept

Get first memory descriptor.

Parameters
kipPointer to the kernel info page
Returns
First memory descriptor stored in the kernel info page

Definition at line 106 of file kip.

Referenced by all(), and all().

+ Here is the caller graph for this function:

◆ is_virtual()

unsigned L4::Kip::Mem_desc::is_virtual ( ) const
inlinenoexcept

Return whether the memory descriptor describes a virtual or physical region.

Returns
True for virtual region, false for physical region.

Definition at line 230 of file kip.

◆ set()

void L4::Kip::Mem_desc::set ( unsigned long  start,
unsigned long  end,
Mem_type  t,
unsigned char  st = 0,
bool  virt = false,
bool  eager = false 
)
inlinenoexcept

Set values of a memory descriptor.

Parameters
startStart address
endEnd address
tMemory type
stSub-type, defaults to 0
virtVirtual or physical memory region, defaults to physical
eagerThe region shall be eligible for eager mapping in sigma0 or the root task. This is just an optimization to prevent on-demand paging.

Definition at line 250 of file kip.

References end(), and start().

+ Here is the call graph for this function:

◆ size()

unsigned long L4::Kip::Mem_desc::size ( ) const
inlinenoexcept

Return size of region described by the memory descriptor.

Returns
Size of the region described by the memory descriptor

Definition at line 205 of file kip.

References end(), and start().

+ Here is the call graph for this function:

◆ start()

unsigned long L4::Kip::Mem_desc::start ( ) const
inlinenoexcept

Return start address of memory descriptor.

Returns
Start address of memory descriptor

Definition at line 191 of file kip.

Referenced by set(), and size().

+ Here is the caller graph for this function:

◆ sub_type()

unsigned char L4::Kip::Mem_desc::sub_type ( ) const
inlinenoexcept

Return sub-type of the memory descriptor.

Returns
Sub-type of the memory descriptor

Definition at line 222 of file kip.

◆ type()

Mem_type L4::Kip::Mem_desc::type ( ) const
inlinenoexcept

Return type of the memory descriptor.

Returns
Type of the memory descriptor

Definition at line 212 of file kip.


The documentation for this class was generated from the following file: