IBootControl接口
引导控制HAL旨在允许管理可以独立引导的多组冗余分区,称为插槽(slot)。Slot是名称仅由给定后缀区分的一套分区。在这里,它们由一个索引号0标识,并与它们的后缀相关联,后缀可以与任何特定分区的基本名称相关联,这样就可以查找到该slot。此设置的主要用途是允许在设备运行时进行后台更新,并提供后备更新失败的事件。
方法:
getNumberSlots
getNumberSlots ()
generates (uint32_t numSlots)
getNumberSlots()
返回可用slot的数量。例如,具有一组分区的系统必须返回1,具有A/B的系统必须返回2,A/B/C -> 3,依此类推。
少于两个slot不支持后台更新,例如,如果从仅具有每个分区的一个副本的虚拟机运行以进行测试。
类型 | 值 |
---|---|
返回值 | numSlots |
getCurrentSlot
getCurrentSlot ()
generates (Slot slot)
getCurrentSlot()
返回引导当前引导的slot号,例如slot号为0(slotA)。 假设当前slot为A,则可以直接访问B下的块设备,而不会有任何损坏风险。
返回的值始终保证严格小于getNumberSlots返回的值。slot号从0开始,最大为getNumberSlots() - 1
。
此处返回的值必须与从bootloader传递的后缀匹配,无论slot已经激活还是已经成功启动。
类型 | 值 |
---|---|
返回值 | slot |
markBootSuccessful
markBootSuccessful ()
generates (CommandResult error)
markBootSuccessful()
将当前插槽标记为已成功引导。
类型 | 值 |
---|---|
返回值 | 返回命令是否成功 |
setActiveBootSlot
setActiveBootSlot (Slot slot)
generates (CommandResult error)
setActiveBootSlot()
将参数中传递的slot标记为激活引导slot(有关“slot”参数的说明,请参阅getCurrentSlot)。 这会覆盖以前对setSlotAsUnbootable的任何调用。
类型 | 值 |
---|---|
参数 | slot |
返回值 | 返回命令是否成功 |
setSlotAsUnbootable
setSlotAsUnbootable (Slot slot)
generates (CommandResult error)
setSlotAsUnbootable()
将参数中传递的slot标记为无法引导。这可以在更新slot的分区内容时使用,这样系统就不能尝试引导已知的不可启动的slot。
类型 | 值 |
---|---|
参数 | slot |
返回值 | 返回命令是否成功 |
isSlotBootable
isSlotBootable (Slot slot)
generates (BoolResult bootable)
isSlotBootable()
返回在参数中传递的slot是可引导的。请注意,引导加载程序和操作系统都可以使用setSlotAsUnbootable使slot无法引导。
类型 | 值 |
---|---|
参数 | slot |
返回值 | 如果插槽是可引导的,则返回TRUE;如果不是,则返回FALSE,如果slot不存在,则返回INVALID_SLOT。 |
isSlotMarkedSuccessful
isSlotMarkedSuccessful (Slot slot)
generates (BoolResult successful)
如果使用markBootSuccessful()
将参数中传递的slot标记为成功,则isSlotMarkedSucessful()返回。注意只有当前slot可以标记为成功,但可以查询任何slot。
类型 | 值 |
---|---|
参数 | slot |
返回值 | 如果插槽已标记为成功则返回TRUE,否则返回FALSE,如果插槽不存在则返回INVALID_SLOT。 |
getSuffix
getSuffix (Slot slot)
generates (string slotSuffix)
getSuffix()
返回分区使用的字符串后缀,该分区对应于作为参数传入的slot号。bootloader必须通过androidboot.slot_suffix中的内核命令行属性或者/firmware/android/slot_suffix路径的设备树来传递当前活动slot的后缀。
类型 | 值 |
---|---|
参数 | slot |
返回值 | slotSuffix 如果插槽与现有slot不匹配,则返回空字符串“”。 |