Android研究_Gralloc_4alloc设备open过程分析
来源:互联网 发布:java企业门户网站源码 编辑:程序博客网 时间:2024/06/10 07:53
alloc设备open过程分析
在开启fb设备的过程中,会调用函数gralloc_open(module, &gralloc_device);去开启alloc设备。该函数定义在:/hardware/libhardware/include/hardware/gralloc.h
/** convenience API for opening and closing a supported device */
static inline int gralloc_open(const struct hw_module_t* module,
struct alloc_device_t** device) {
return module->methods->open(module,
GRALLOC_HARDWARE_GPU0, (struct hw_device_t**)device);
}
由于module传进来的是Gralloc Module,所以,本质上就是调用了Gralloc Module的open函数,即:int gralloc_device_open(const hw_module_t* module, const char*name, hw_device_t** device)
// Open Gralloc device
int gralloc_device_open(const hw_module_t* module, const char* name,
hw_device_t** device)
{
int status = -EINVAL;
// 这回应该走这个分支
if (!strcmp(name, GRALLOC_HARDWARE_GPU0)) {
const private_module_t* m = reinterpret_cast<const private_module_t*>(
module);
// gpu_context_t类继承了alloc_device_t,并实现了alloc_device_t中的alloc,free等方法。
gpu_context_t *dev;
IAllocController* alloc_ctrl = IAllocController::getInstance();
dev = new gpu_context_t(m, alloc_ctrl);
*device = &dev->common;
status = 0;
} else {
status = fb_device_open(module, name, device);
}
return status;
}
Gpu_context_t的构造函数为:
gpu_context_t::gpu_context_t(const private_module_t* module,
IAllocController* alloc_ctrl ) :
mAllocCtrl(alloc_ctrl)
{
// Zero out the alloc_device_t
memset(static_cast<alloc_device_t*>(this), 0, sizeof(alloc_device_t));
// Initialize the procs
common.tag = HARDWARE_DEVICE_TAG;
common.version = 0;
common.module = const_cast<hw_module_t*>(&module->base.common);
common.close = gralloc_close;
alloc = gralloc_alloc;
#ifdef QCOM_BSP
allocSize = gralloc_alloc_size;
#endif
free = gralloc_free;
}
主要是完成alloc_device_t参数的初始化。其成员函数alloc,free被设置成gralloc_alloc & gralloc_free。自此,alloc设备的打开过程就分析完成了。
接下来,我们重点分析alloc_device_t中提供的几个关键函数。
- Android研究_Gralloc_4alloc设备open过程分析
- Android研究_Gralloc_3fb设备Open过程
- android输入设备配置文件加载过程分析
- X-Ray检测Android设备Root漏洞过程分析
- X-Ray检测Android设备Root漏洞过程分析
- Linux-2.6 设备文件研究与分析
- open cv研究笔记之:find-Obj程序过程
- Android蓝牙扫描设备过程
- CMMI过程改进裁剪研究和分析
- 从devkit8000分析设备驱动程序工作过程
- PCI设备的注册过程分析
- 设备节点创建过程源代码分析
- linux0.11块设备读写过程分析
- PCI设备的注册过程分析1
- 分析设备模型、设备模型与驱动关联的过程
- 块设备--块设备创建和过程分析
- Android设备管理器漏洞分析!
- 嵌入式便携设备中电源管理的分析与研究
- 重磅开源!678页阿里核心技术,免费下载!
- 图像映射(图像热点)的使用
- java中equals方法的用法以及==的用法(转)
- 首页地图渲染之国际化(三)---趋势图联动显示
- jquery操作动态生成的元素
- Android研究_Gralloc_4alloc设备open过程分析
- 阿里云“万亿苏醒计划”:AIoT智联网的伟大使命
- web项目抽取BaseDao
- 五大框架
- SQL 语法
- Python 计算彩色图像信噪比
- IntelliJ IDEA之项目热部署设置,解决为什么修改jsp或html页面,需要重启服务才能生效!
- CXF的一些简单简介及用法
- 最大公约数(性能)