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不匹配,则返回空字符串“”。
Android安卓IBootControl接口介绍
Tagged on:

发表评论

邮箱地址不会被公开。 必填项已用*标注