一、 hardware.c
该文件提供的接口函数有:
1、static int load()
2、int hw_get_module(const char *id, const struct hw_module_t **module) //主函数,实现了核心的加载功能。
status = load(id, path, module);//封装了该函数来实现模块的加载。
二、modules
1、android中的模块是定义在/system/libs/hw/文件下的.so文件,有事先规定好的命名方式,如,
/system/libs/hw/<*_HARDWARE_MODULE_ID>.<ro.product.board>.so
/system/libs/hw/<*_HARDWARE_MODULE_ID>.<ro.board.platform>.so
/system/libs/hw/<*_HARDWARE_MODULE_ID>.<ro.arch>.so
/system/libs/hw/<*_HARDWARE_MODULE_ID>.default.so
模块的接口定义在include/hardware/文件夹中,一个模块可以有几个不同的变量,如:"default", "arch" 和"board", 并且也按照"board", "arch" and "default"的顺序来加载。
"board"变量的代码在partners/...目录下;
"default" and "arch" 的代码在hardware/modules/目录下。
2、
gralloc
该文件夹包涵的源文件有:
2)
gralloc.cpp
3)
mapper.cpp
4)
gr.h
- gr.h 主要声明和buffer相关的一些函数、class Locker class Locker {}类实现进程锁内联函数的声明。
- gralloc_priv.h 声明了2个结构体:
struct private_module_t;struct private_handle_t; //这2个结构体描述了模块和句柄的属性,若实现了这2个结构体就实现了相关的模块和句柄。
-
1)fb_setSwapInterval2) fb_setUpdateRect3) fb_post4) mapFrameBufferLocked5) roundUpToPageSize // map the framebuffer6) mapFrameBuffer //调用4)7) fb_close8) fb_device_open //打开模块的时候同时进行了初始化设备的工作
9) 结构体 struct fb_context_t {framebuffer_device_t device;};