严格意义上说,NameSpace的这种结构在很多代码环境中都可以存在,这里主要是讲kernel或者efi这种轻量级环境中的数据结构体。 命名空间提供了虚拟化的一种轻量级形式,使得我们可以从不同的方面来查看系统的全局属性。该机制类似于Solaris中的Zone或者FreeBSD中的jail。 正是由于
我知道这是一个非常老生常谈的问题,但还是希望能写一篇文章记录并看过一遍完整的kernel初始化函数到底干了啥。 kernel内核的入口函数在/init/main.c的start_kernel函数中,源代码在文章末尾,这里逐代码解释一遍start_kernel里干了什么。(注意,start_kerne
DPDK DPDK(Data Plane Development Kit)是一个目前由Linux基金会运营维护的开源数据平面开发套件。主要基于Linux运行,是一个快速数据包的函数库与驱动集合。 DPDK的主要特点是使用了一个环境抽象层,以同样的上层命令适配不同的硬件环境。 DPDK在软件技术上主要
由之前撰写的GRUB2项目分析可以知道,GRUB的主函数在输入来自固件的System Table的前提下,可以通过main.c中的load module(来自/core/kern/dl.c的功能)。 可以确定,module的初始化都是从符合module标准头中的init指针所代指的函数执行开始的。
MOD_INIT是定义在每个模块c语言源文件中的一个块,这个块需要由别的东西来解释才会最终生效。 下面是一段示例代码: GRUB_MOD_INIT(acpi) { cmd = grub_register_extcmd_lockdown ("acpi", grub_cmd_acpi, 0,
ACPI(Advanced Configuration and Power Interface)主要用于固件初始化的标准化,其主要功能包括如下几个点: 1、热拔插管理,枚举与识别硬件资源配置 2、进行中断向量的分配 3、整机电源管理,性能、功耗、温度的三向调节 4、处理器主频管理、状态与电压管理 A
QEMU(Quick Emulator)是一款开源机器模拟器,通过动态二进制翻译的软件技术,仿真不同处理器体系架构的工具。 QEMU项目github:https://github.com/qemu/qemu QEMU下载到本地后,由于QEMU本身不需要再次搭建autogen或bootstrap形式的
DXE阶段为PEI阶段后,BSD阶段前,是实例化system table中具体的boot service的阶段。在此阶段中会完成内存的初始化。 Dxe的文件主函数文件在/MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c文件中。 其入口函数为DxeMain EFI_STA
EDK2项目的编译路程可以参考:edk2构建编译流程 - yooooooo - 博客园 EDK2项目的本体代码可以参考:GitHub - tianocore/edk2: EDK II · GitHub EDK2项目参考方法:https://wenku.csdn.net/column/gd7md7za
UEFI固件本体向efi文件传输参数时,会向入口函数传递两个核心参数:ImageHandle和SystemTable。 GRUB主要还是与UEFI打配合的,UEFI固件本身需要遵从UEFI协议,从下文的描述中也可以看出UEFI协议的一些核心概念,比如protocol的概念。UEFI固件本身的源代码编