framework中的BBSTable
来源:互联网 发布:eset知乎 编辑:程序博客网 时间:2024/05/18 18:00
1 概述
BBS定义了BIOS识别系统中IPL(Initial Program Load)设备的方法,使得BIOS可以按照用户设置的优先顺序来引导系统。
BBS使得BIOS可以将系统中的所有IPL设备放进一个列表,并保存在NV存储器中。IPL设备一般包括以下三种:BAID,PnP Card以及Legacy。BBS只支持BAID和PnP Card。
BBS最基本的一个功能是定义IPL优先级。IPL优先级是用户通过配置界面为IPL设备指定的,比如第一个启动设备为A:,第二个为C:…。用户每次开机时,系统都需要重新枚举所有的IPL设备。
如果从一个IPL设备启动操作系统失败,BIOS将重新获得控制权,并尝试从下一个IPL设备启动。所有IPL设备都尝试无法启动后,这个过程会才会结束。这时BIOS可以打印一个提示信息,告诉用户无法启动到操作系统,等待用户敲一个键后,重新调用INT 19h。
IPL设备实际上可以是任何可以加载操作系统的设备,包括软驱、硬盘、CD-ROM、PCMCIA等,将来还可能包括串口、并口等。
IPL设备的一个比较重要的功能是在引导操作系统失败后,必须要能返回BIOS,BBS定义INT 18h作为启动失败的恢复向量。比如,如果配置从一个网卡启动,但是没插网线,这时网卡的Oprom就应该通过调用INT 18h告诉BIOS无法引导操作系统。
2 BBS Table的创建与获取
CSM文档中定义EFI_LEGACY_BIOS_PROTOCOL,该Protocol提供了获取BBS table的接口函数:GetBbsInfo。
typedef
EFI_STATUS
(EFIAPI *EFI_LEGACY_BIOS_GET_BBS_INFO) (
IN EFI_LEGACY_BIOS_PROTOCOL *This,
OUT UINT16 *HddCount,
OUT HDD_INFO **HddInfo,
OUT UINT16 *BbsCount,
IN OUT BBS_TABLE **BbsTable
)
这个函数可以得到内部的BBS数据结构,以便对其进行修改。
Framework中定义了一个256项的BbsTable[256],其中BbsTable[0]对应的是软驱,从BbsTable[1]- BbsTable[16]分别对应一块硬盘,后面的所有项用于存放BEV和BCV。
硬盘对应的BbsTable为什么是16项呢?这是因为代码中假设平台支持的最大IDE控制器个数为8,每个控制器可以有两个驱动器Master和Slave。
函数首先判断软驱是否连接,如果有连接有是否有软盘……,然后填充BbsTable[0]。完成后就轮到HDD了,先读取系统中的硬盘驱动器的信息HddInfo,根据该信息分别填充BbsTable[1]- BbsTable[16]。最后通过调用legacy16的1号函数Legacy16UpdateBbs,将不兼容BBS的Oprom加入到BbsTable中。
涉及到的代码都在文件LegacyBios/LegacyBoot.c中。
- framework中的BBSTable
- zend framework 中的链接
- Zend Framework中的ErrorHandler
- JAVA中的Collection FrameWork
- .NET Framework中的事件
- NET Framework 中的反射
- Framework中的AIDL
- Framework中的钩子函数
- Framework中的状态模式
- Framework中的适配器模式
- Entity Framework中的事务
- framework中的ProcessRecord
- JAVA 中的 Collection FrameWork
- .NET Framework 中的反射
- Framework中的TelephonyRegistry
- Framework中的连接管理机制
- Framework中的AIDL
- JAVA 中的Collection FrameWork
- 在JavaScript中实现命名空间
- WebSphereV6服务集成总线的配置和操作
- iptables之类NAT篇
- 快速删除重复记录,SQL Server如何实现
- Netbeans下实现ajax用xml传值
- framework中的BBSTable
- VTABLE(虚表)的结构
- dsoFramer1.3汉化版
- 让IE6和IE7共存
- 功能齐全的DataGrid
- 自动赚钱的永动机----股票交易
- 事件和委托学习笔记(2007.12.20)
- 同步两个SQLServer数据库
- iframe中的session失效问题情况描述和解决