更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
los_vm_boot.c 文件参考

浏览源代码.

函数

VOID * OsVmBootMemAlloc (size_t len)
 
UINT32 OsSysMemInit (VOID)
 整个系统内存初始化 更多...
 

变量

UINTPTR g_vmBootMemBase = (UINTPTR)&__bss_end
 虚拟内存区间检查, 需理解 los_vm_zone.h 中画出的鸿蒙虚拟内存全景图 更多...
 
BOOL g_kHeapInited = FALSE
 内核堆区初始化变量 更多...
 

函数说明

◆ OsSysMemInit()

UINT32 OsSysMemInit ( VOID  )

整个系统内存初始化

在文件 los_vm_boot.c65 行定义.

66{
67 STATUS_T ret;
68
69#ifdef LOSCFG_KERNEL_VM
70 OsKSpaceInit();//内核空间初始化
71#endif
72
73 ret = OsKHeapInit(OS_KHEAP_BLOCK_SIZE);// 内核堆空间初始化 512K
74 if (ret != LOS_OK) {
75 VM_ERR("OsKHeapInit fail\n");
76 return LOS_NOK;
77 }
78
79#ifdef LOSCFG_KERNEL_VM
80 OsVmPageStartup();// 物理内存初始化
81 g_kHeapInited = TRUE; //内核堆区初始化完成
82 OsInitMappingStartUp();//映射初始化
83#else
84 g_kHeapInited = TRUE;//内核堆区完成初始化
85#endif
86 return LOS_OK;
87}
VOID OsInitMappingStartUp(VOID)
OsInitMappingStartUp 开始初始化mmu
STATUS_T OsKHeapInit(size_t size)
内核空间动态内存(堆内存)初始化 , 争取系统动态内存池
Definition: los_memory.c:2095
int STATUS_T
Definition: los_typedef.h:215
BOOL g_kHeapInited
内核堆区初始化变量
Definition: los_vm_boot.c:46
VOID OsKSpaceInit(VOID)
内核虚拟空间初始化
Definition: los_vm_map.c:250
VOID OsVmPageStartup(VOID)
Definition: los_vm_page.c:72
函数调用图:
这是这个函数的调用关系图:

◆ OsVmBootMemAlloc()

VOID * OsVmBootMemAlloc ( size_t  len)

在文件 los_vm_boot.c50 行定义.

51{
52 UINTPTR ptr;
53
54 if (g_kHeapInited) {
55 VM_ERR("kernel heap has been initialized, do not to use boot memory allocation!");
56 return NULL;
57 }
58
59 ptr = LOS_Align(g_vmBootMemBase, sizeof(UINTPTR));//对齐
60 g_vmBootMemBase = ptr + LOS_Align(len, sizeof(UINTPTR));//通过改变 g_vmBootMemBase来获取内存
61 //这样也行,g_vmBootMemBase 真是野蛮粗暴
62 return (VOID *)ptr;
63}
LITE_OS_SEC_TEXT UINTPTR LOS_Align(UINTPTR addr, UINT32 boundary)
Align the value (addr) by some bytes (boundary) you specify.
Definition: los_misc.c:35
unsigned long UINTPTR
Definition: los_typedef.h:68
UINTPTR g_vmBootMemBase
虚拟内存区间检查, 需理解 los_vm_zone.h 中画出的鸿蒙虚拟内存全景图
Definition: los_vm_boot.c:45
函数调用图:
这是这个函数的调用关系图:

变量说明

◆ g_kHeapInited

BOOL g_kHeapInited = FALSE

内核堆区初始化变量

开机引导分配器分配内存,只有开机时采用的分配方式

在文件 los_vm_boot.c46 行定义.

◆ g_vmBootMemBase

UINTPTR g_vmBootMemBase = (UINTPTR)&__bss_end

虚拟内存区间检查, 需理解 los_vm_zone.h 中画出的鸿蒙虚拟内存全景图

内核空间可用于分配的区域,紧挨着.bss区

在文件 los_vm_boot.c45 行定义.