更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
los_vm_boot.h
浏览该文件的文档.
1/*
2 * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved.
3 * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without modification,
6 * are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice, this list of
9 * conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
12 * of conditions and the following disclaimer in the documentation and/or other materials
13 * provided with the distribution.
14 *
15 * 3. Neither the name of the copyright holder nor the names of its contributors may be used
16 * to endorse or promote products derived from this software without specific prior written
17 * permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
26 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */
31
32/* flags for initial mapping struct */
33#define MMU_INITIAL_MAPPING_TEMPORARY (0x1)
34#define MMU_INITIAL_MAPPING_FLAG_UNCACHED (0x2)
35#define MMU_INITIAL_MAPPING_FLAG_DEVICE (0x4)
36#define MMU_INITIAL_MAPPING_FLAG_DYNAMIC (0x8)
37#ifndef ASSEMBLY
38
39#ifndef __LOS_VM_BOOT_H__
40#define __LOS_VM_BOOT_H__
41
42#include "los_typedef.h"
43
44#ifdef __cplusplus
45#if __cplusplus
46extern "C" {
47#endif /* __cplusplus */
48#endif /* __cplusplus */
49
50#define OS_KHEAP_BLOCK_SIZE (512 * 1024UL) ///< 内核空间 堆内存部分大小, 512K
51//记录 MMU 映射关系
52typedef struct ArchMmuInitMapping {
53 PADDR_T phys;///< 物理地址
54 VADDR_T virt;///< 虚拟地址
55 size_t size;///< 大小
56 unsigned int flags;///< 标识 读/写/.. VM_MAP_REGION_FLAG_PERM_*
57 const char *name;///< 名称
59
60extern LosArchMmuInitMapping g_archMmuInitMapping[];//映射关系表
61
63extern BOOL g_kHeapInited;
64
65UINT32 OsVmAddrCheck(size_t tempAddr, size_t length);
66VOID *OsVmBootMemAlloc(size_t len);
68VOID OsInitMappingStartUp(VOID);
69
70#ifdef __cplusplus
71#if __cplusplus
72}
73#endif /* __cplusplus */
74#endif /* __cplusplus */
75#endif /* __LOS_VM_BOOT_H__ */
76#endif /* ASSEMBLY */
unsigned long PADDR_T
Definition: los_typedef.h:207
unsigned long VADDR_T
Definition: los_typedef.h:208
unsigned long UINTPTR
Definition: los_typedef.h:68
unsigned int UINT32
Definition: los_typedef.h:57
size_t BOOL
Definition: los_typedef.h:88
VOID * OsVmBootMemAlloc(size_t len)
Definition: los_vm_boot.c:50
struct ArchMmuInitMapping LosArchMmuInitMapping
BOOL g_kHeapInited
内核堆区初始化变量
Definition: los_vm_boot.c:46
UINT32 OsVmAddrCheck(size_t tempAddr, size_t length)
UINT32 OsSysMemInit(VOID)
整个系统内存初始化
Definition: los_vm_boot.c:65
VOID OsInitMappingStartUp(VOID)
OsInitMappingStartUp 开始初始化mmu
UINTPTR g_vmBootMemBase
虚拟内存区间检查, 需理解 los_vm_zone.h 中画出的鸿蒙虚拟内存全景图
Definition: los_vm_boot.c:45
LosArchMmuInitMapping g_archMmuInitMapping[]
VADDR_T virt
虚拟地址
Definition: los_vm_boot.h:54
unsigned int flags
标识 读/写/.. VM_MAP_REGION_FLAG_PERM_*
Definition: los_vm_boot.h:56
PADDR_T phys
物理地址
Definition: los_vm_boot.h:53
const char * name
名称
Definition: los_vm_boot.h:57
size_t size
大小
Definition: los_vm_boot.h:55