SimpleKernel 1.17.0
Loading...
Searching...
No Matches
basic_info.hpp
Go to the documentation of this file.
1
5#pragma once
6
7#include <etl/singleton.h>
8
9#include <cstddef>
10#include <cstdint>
11
12#include "kernel_log.hpp"
13
14// 引用链接脚本中的变量
17extern "C" void* __executable_start[];
19extern "C" void* __etext[];
21extern "C" void* end[];
23extern "C" void _boot();
24
26struct BasicInfo {
31
33 uint64_t kernel_addr{0};
35 size_t kernel_size{0};
36
38 uint64_t elf_addr{0};
39
41 uint64_t fdt_addr{0};
42
44 size_t core_count{0};
45
47 size_t interval{0};
48
51
56 explicit BasicInfo(int argc, const char** argv);
57
58 BasicInfo() = default;
59 BasicInfo(const BasicInfo&) = default;
60 BasicInfo(BasicInfo&&) = default;
61 auto operator=(const BasicInfo&) -> BasicInfo& = default;
62 auto operator=(BasicInfo&&) -> BasicInfo& = default;
63 ~BasicInfo() = default;
65};
66
67using BasicInfoSingleton = etl::singleton<BasicInfo>;
void * __etext[]
代码段结束
void _boot()
内核入口,在 boot.S 中定义
void * end[]
内核结束
void * __executable_start[]
etl::singleton< BasicInfo > BasicInfoSingleton
内核基础信息(物理内存、内核地址、CPU 核数等)
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 地址
BasicInfo(BasicInfo &&)=default
size_t physical_memory_size
physical_memory 大小
BasicInfo()=default
~BasicInfo()=default
auto operator=(BasicInfo &&) -> BasicInfo &=default
uint64_t elf_addr
elf 地址
BasicInfo(const BasicInfo &)=default
size_t kernel_size
kernel 大小
auto operator=(const BasicInfo &) -> BasicInfo &=default