阅码场5小时深入理解linUX/ARM虚拟化
在用户空间使用 gST 访问系统表
上面示例中的模块入口函数 UefiMain 中使用传入的参数 SystemTable 访问系统表。EDK2 为了方便开发者,提供了 UefiBootServicesTableLib,在 UefiLib 定义了全局变量 gST
、gBS、gImageHandle。这三个全局变量在函数 UefiBootServicesTableLibConstructor 中被初始化,该函数是库 UefiBootServicesTableLib 的构造函数,在 AutoGen.c 中的 ProcessLibraryConstructorList 被调用,而 ProcessLibraryConstructorList 是在 UefiMain 之前被调用的。
构造函数 UefiBootServicesTableLibConstructor 源码: