SimpleKernel 1.17.0
Loading...
Searching...
No Matches
BasicInfo Struct Reference

内核基础信息(物理内存、内核地址、CPU 核数等) More...

#include <basic_info.hpp>

Collaboration diagram for BasicInfo:
Collaboration graph

Public Member Functions

构造/析构函数
 BasicInfo (int argc, const char **argv)
 
 BasicInfo ()=default
 
 BasicInfo (const BasicInfo &)=default
 
 BasicInfo (BasicInfo &&)=default
 
auto operator= (const BasicInfo &) -> BasicInfo &=default
 
auto operator= (BasicInfo &&) -> BasicInfo &=default
 
 ~BasicInfo ()=default
 

Public Attributes

uint64_t physical_memory_addr {0}
 physical_memory 地址
 
size_t physical_memory_size {0}
 physical_memory 大小
 
uint64_t kernel_addr {0}
 kernel 地址
 
size_t kernel_size {0}
 kernel 大小
 
uint64_t elf_addr {0}
 elf 地址
 
uint64_t fdt_addr {0}
 fdt 地址
 
size_t core_count {0}
 cpu 核数
 
size_t interval {0}
 时钟频率
 

Detailed Description

内核基础信息(物理内存、内核地址、CPU 核数等)

Definition at line 26 of file basic_info.hpp.

Constructor & Destructor Documentation

◆ BasicInfo() [1/4]

BasicInfo::BasicInfo ( int  argc,
const char **  argv 
)
explicit

构造函数,在 arch_main.cpp 中定义

Parameters
argc同 _start
argv同 _start

Definition at line 20 of file arch_main.cpp.

20 {
21 KernelFdtSingleton::instance()
22 .GetMemory()
23 .and_then([this](std::pair<uint64_t, size_t> mem) -> Expected<void> {
24 physical_memory_addr = mem.first;
25 physical_memory_size = mem.second;
26 return {};
27 })
28 .or_else([](Error err) -> Expected<void> {
29 klog::Err("Failed to get memory info: {}", err.message());
30 while (true) {
32 }
33 return {};
34 });
35
36 kernel_addr = reinterpret_cast<uint64_t>(__executable_start);
37 kernel_size = reinterpret_cast<uint64_t>(end) -
38 reinterpret_cast<uint64_t>(__executable_start);
40
41 fdt_addr = strtoull(argv[2], nullptr, 16);
42
43 core_count = KernelFdtSingleton::instance().GetCoreCount().value_or(1);
44
45 interval = cpu_io::CNTFRQ_EL0::Read();
46}
void * end[]
内核结束
void * __executable_start[]
std::expected< T, Error > Expected
std::expected 别名模板
Definition expected.hpp:365
void Pause()
Definition cpu_io.h:20
auto Err(etl::format_string< Args... > fmt, Args &&... args) -> void
以 ERROR 级别记录日志
#define strtoull
size_t core_count
cpu 核数
uint64_t fdt_addr
fdt 地址
uint64_t physical_memory_addr
physical_memory 地址
size_t interval
时钟频率
uint64_t kernel_addr
kernel 地址
size_t physical_memory_size
physical_memory 大小
uint64_t elf_addr
elf 地址
size_t kernel_size
kernel 大小
错误类型,用于 std::expected
Definition expected.hpp:343
constexpr auto message() const -> const char *
Definition expected.hpp:358
Here is the call graph for this function:

◆ BasicInfo() [2/4]

BasicInfo::BasicInfo ( )
default

◆ BasicInfo() [3/4]

BasicInfo::BasicInfo ( const BasicInfo )
default

◆ BasicInfo() [4/4]

BasicInfo::BasicInfo ( BasicInfo &&  )
default

◆ ~BasicInfo()

BasicInfo::~BasicInfo ( )
default

Member Function Documentation

◆ operator=() [1/2]

auto BasicInfo::operator= ( BasicInfo &&  ) -> BasicInfo &=default
default

◆ operator=() [2/2]

auto BasicInfo::operator= ( const BasicInfo ) -> BasicInfo &=default
default

Member Data Documentation

◆ core_count

size_t BasicInfo::core_count {0}

cpu 核数

Definition at line 44 of file basic_info.hpp.

44{0};

◆ elf_addr

uint64_t BasicInfo::elf_addr {0}

elf 地址

Definition at line 38 of file basic_info.hpp.

38{0};

◆ fdt_addr

uint64_t BasicInfo::fdt_addr {0}

fdt 地址

Definition at line 41 of file basic_info.hpp.

41{0};

◆ interval

size_t BasicInfo::interval {0}

时钟频率

Definition at line 47 of file basic_info.hpp.

47{0};

◆ kernel_addr

uint64_t BasicInfo::kernel_addr {0}

kernel 地址

Definition at line 33 of file basic_info.hpp.

33{0};

◆ kernel_size

size_t BasicInfo::kernel_size {0}

kernel 大小

Definition at line 35 of file basic_info.hpp.

35{0};

◆ physical_memory_addr

uint64_t BasicInfo::physical_memory_addr {0}

physical_memory 地址

Definition at line 28 of file basic_info.hpp.

28{0};

◆ physical_memory_size

size_t BasicInfo::physical_memory_size {0}

physical_memory 大小

Definition at line 30 of file basic_info.hpp.

30{0};

The documentation for this struct was generated from the following files: