HAL是kernel与framework中间的一层。下面通过分析来说明HAL在android架构中起了什么作用,它如何把framework和kernel联系起来,承上启下。它的存在为什么使得android架构被linux踢出linux内核树。注意,HAL的存在仅仅使得android商业化的成功,却限制了android的开源发展,它对于开发本身而言并不是必要的。
1、 HAL层实现架构(通过源代码来先看一下)
分析HAL架构需要了解三个结构
struct hw_module_t; //模块类型
struct hw_module_methods_t; //模块方法
struct hw_device_t; //设备类型
下面从源码中来看看他们的作用是什么~~~
在Hardware.h文件(/hardware/libhardware/include/hardware/hardware.h),有如下定义
(1) structhw_module_t; //模块类型
/* Every hardware module must have a data structure named HAL_MODULE_INFO_SYM
* and the fields of this data structure mustbegin with hw_module_t
* followed by module specific information.*/
typedef struct hw_module_t {… …}
(2) struct hw_module_methods_t //模块方法
typedefstruct hw_module_methods_t {
/** Open aspecific device */
int(*open)(const struct hw_module_t* module, const char* id,
struct hw_device_t** device);
} hw_module_methods_t;
(3) struct