[1] HAL(Hardware Abstract Layer)
标准化硬件操作, 使得Android系统不至于过渡依赖linux内核
[2] libhardware_legacy
直接将硬件操作实现成一个动态库, 存在如下确定:
应用程序或服务使用硬件时,每个进程会加载一次硬件操作动态库, 使得硬件
操作动态库,无法知道硬件是否被竞态访问。
[3] libhardware(stub)
硬件抽象层多了一个libruntime.so库, 该库通过dlopen机制打开并使用动态库,
这种机制保证多个进程使用同一个库,操作系统只会加载一次, 从而保证硬件操作
模块的动态库,同一个硬件只会加载一次, 硬件模块动态库中知道一个硬件是否被
多个进程使用,从而可以处理竞态。
[4] 系统框架
struct led_module_t {
struct hw_module_t module; // 继承hw_module_t数据结构
标准化硬件操作, 使得Android系统不至于过渡依赖linux内核
[2] libhardware_legacy
直接将硬件操作实现成一个动态库, 存在如下确定:
应用程序或服务使用硬件时,每个进程会加载一次硬件操作动态库, 使得硬件
操作动态库,无法知道硬件是否被竞态访问。
[3] libhardware(stub)
硬件抽象层多了一个libruntime.so库, 该库通过dlopen机制打开并使用动态库,
这种机制保证多个进程使用同一个库,操作系统只会加载一次, 从而保证硬件操作
模块的动态库,同一个硬件只会加载一次, 硬件模块动态库中知道一个硬件是否被
多个进程使用,从而可以处理竞态。
[4] 系统框架
《系统服务框架.bmp》
[5] led程序数据结构继承
struct led_module_t {
struct hw_module_t module; // 继承hw_module_t数据结构