hw_module_t 结构体参考文档
#include <
hardware.h
>
数据字段 |
|
uint32_t | 标记 |
uint16_t | module_api_version |
uint16_t | hal_api_version |
const char * | id |
const char * | name |
const char * | 作者 |
struct hw_module_methods_t * | 方法 |
void * | dso |
uint32_t | 保留 [32-7] |
详细说明
每个硬件模块都必须有一个名为 HAL_MODULE_INFO_SYM 的数据结构,并且此数据结构的字段必须以 hw_module_t 开头,后跟模块专用信息。
定义位于文件 hardware.h 的 86 行 。
字段文档
const char* author |
模块的作者/所有者/实现者
定义位于文件 hardware.h 的 139 行 。
void* dso |
模块的 dso
定义位于文件 hardware.h 的 145 行 。
uint16_t hal_api_version |
此处提供了 version_major/version_minor 定义,以实现临时源代码兼容性。它们将在下一版本中移除。所有客户端都必须转换为新版本格式。HAL 模块接口的 API 版本。这是为了对 hw_module_t 、 hw_module_methods_t 和 hw_device_t 结构体和定义进行版本控制。
HAL 接口拥有此字段。模块用户/实现不得依赖此值获取版本信息。
目前,0 是唯一有效的值。
定义位于文件 hardware.h 的 129 行 。
const char* id |
模块的标识符
定义位于文件 hardware.h 的 133 行。
struct hw_module_methods_t * methods |
模块方法
定义位于文件 hardware.h 的 142 行 。
uint16_t module_api_version |
已实现模块的 API 版本。当模块接口发生更改时,模块所有者负责更新版本。
gralloc 和音频等派生模块拥有并管理此字段。模块用户必须解读版本字段,以决定是否与所提供的模块实现进行互操作。例如,SurfaceFlinger 负责确保它知道如何管理不同版本的 gralloc-module API,而 AudioFlinger 必须知道如何对 audio-module API 执行相同的操作。
模块 API 版本应包含一个主要版本和一个次要版本。例如,版本 1.0 可以表示为 0x0100。此格式暗示版本 0x0100-0x01ff 均与 API 兼容。
将来,libhardware 将公开 hw_get_module_version()(或等效函数),该函数将支持的最低/最高版本作为参数,并且能够拒绝版本超出所提供范围的模块。
定义位于文件 hardware.h 的 111 行 。
const char* name |
此模块的名称
定义位于文件 hardware.h 的 136 行 。
uint32_t reserved[32-7] |
填充到 128 字节,预留以供日后使用
定义位于文件 hardware.h 的 151 行 。
uint32_t tag |
标记必须初始化为 HARDWARE_MODULE_TAG
定义位于文件 hardware.h 的 88 行。
此结构体的文档是根据以下文件生成的:
- hardware/libhardware/include/hardware/ hardware.h