/**
* @file boot_info.h
* @brief 启动信息接口
* @author Zone.N (Zone.Niuzh@hotmail.com)
* @version 1.0
* @date 2021-09-18
* @copyright MIT LICENSE
* https://github.com/Simple-XX/SimpleKernel
* @par change log:
*
* Date | Author | Description
* |
---|
2021-09-18 | digmouse233 | 迁移到 doxygen
* |
*/
#ifndef _BOOT_INFO_H_
#define _BOOT_INFO_H_
#include "stdint.h"
//#include "resource.h"
/**
* @brief 启动信息接口
* 由引导传递的机器信息处理
* 如 grub2 传递的 multiboot2 结构
* opensbi 传递的 dtb 结构
* 注意这部分是通过内存传递的,在重新保存之前不能被覆盖
* 架构专有的数据在 dtb.h 或 multiboot2.h
* 实现在 dtb.cpp 或 multiboot2.cpp
*/
namespace BOOT_INFO {
/// 声明,定义在具体的实现中
/// 地址
extern "C" uintptr_t boot_info_addr;
/// 长度
extern size_t boot_info_size;
/**
* @brief 初始化,定义在具体实现中
* @return true 成功
* @return false 成功
*/
extern bool init(void);
/**
* @brief 获取物理内存信息
* @return resource_t 物理内存资源信息
*/
extern resource_t get_memory(void);
/**
* @brief 获取 clint 信息
* @return resource_t clint 资源信息
*/
extern resource_t get_clint(void);
/**
* @brief 获取 plic 信息
* @return resource_t plic 资源信息
*/
extern resource_t get_plic(void);
};
#endif /* _BOOT_INFO_H_ */