android内核函数,Android display架构分析三-Kernel Space Display架构介绍
如上图所示,除了上层的图形应用程序外,和Kernel空间有关的包括Linux FB设备层以及和具体HW相关的驱动层,对应的源文件分别是fb_mem.c、msm_fb.c、mddi_toshiba.c。下面会一一介绍。
fb_mem.c 函数和数据结构介绍
这个文件包含了Linux Fb设备的所有接口,主要函数接口和数据结构如下:
A、Fb设备的文件操作接口
B、3个重要的数据结构
FrameBuffer中有3个重要的结构体,fb.h中定义,如下:
1) 、frame_var_screeninfo
该结构体定义了显卡的一些可变的特性,这些特性在程序运行期间可以由应用程序动态改变,比较典型的如xrex和yres表示在显示屏上显示的真实分辨率、显示的bit数等,该结构体user space可以访问。
2) 、frame_fix_screeninfo
该结构体定义了显卡的一些固定的特性,这些特性在硬件初始化时就被定义了以后不可以更改。其中最重要的成员就是smem_len和
smem_start,前者指示显存的大小(目前程序中定义的显存大小为整屏数据RGB565大小的2倍),后者给出了显存的物理地址。该结构体user
space可以访问。
Note:smem_start是显存的物理地址,应用程序是不可以直接访问的,必须通过fb_ops中的mmp函数映射成虚拟地址后,应用程序方可访问。
3) 、fb_info
FrameBuffer中最重要的结构体,它只能在内核空间内访问。内部定义了fb_ops结构体(包含一系列FrameBuffer的操作函数,Open/read/write、地址映射等).
C、其他
1)、一个重要的全局变量
struct fb_info *registered_fb[FB_MAX];
这变量记录了所有fb_info 结构的实例,fb_info 结构描述显卡的当前状态,所有设备对应的fb_info
结构都保存在这个数组中,当一个FrameBuffer设备驱动向系统注册自己时,其对应的fb_info
结构就会添加到这个结构中,同时num_registered_fb 为自动加1。
2)、注册framebuffer函数
register_framebuffer(struct fb_info *fb_info);
unregister_framebuffer(struct fb_info *fb_info);
这两个是提供给下层FrameBuffer设备驱动的接口,设备驱动通过这两函数向系统注册或注销自己。几乎底层设备驱动所要做的所有事情就是填充fb_info结构然后向系统注册或注销它
android内核函数,Android display架构分析三-Kernel Space Display架构介绍相关推荐
- android emulator虚拟设备之qemu pipe分析(三)
一.概述 qemu pipe也是一个虚拟设备,是一个通用的虚拟设备,用于提供guest os和emulator通信的功能,类似于一个抽象的通信层,这样就不用写很多虚拟设备了. 之前在guest os中 ...
- dart string 转 bool_Dart语法篇之集合操作符函数与源码分析(三)
简述: 在上一篇文章中,我们全面地分析了常用集合的使用以及集合部分源码的分析.那么这一节讲点更实用的内容,绝对可以提高你的Flutter开发效率的函数,那就是集合中常用的操作符函数.这次说的内容的比较 ...
- ion android 内核,关于Android中ION的libion
在高通的OpenCL SDK中,其Android.mk文件中,有判断当前kernel的版本,如果大于4.12,那么就使用libion.so,否则则使用ion kernle uapi: # Tries ...
- android 退出函数,android – 关闭应用程序与退出按钮
下面使用main.xml文件 android:orientation="vertical" android:layout_width="fill_parent" ...
- 企业架构(三)——联邦企业架构框架(FEAF)
文章目录 一.FEAF 1.FEAF的出现 2.FEAF构成 (1)Level 1 (2)Level 2 (3)Level 3--架构模型细化 (4)Level 4--业务架构模型细化(EAP方法) ...
- Android系统10 RK3399 init进程启动(三十五) 属性文件介绍和生成过程
配套系列教学视频链接: 安卓系列教程之ROM系统开发-百问100ask 说明 系统:Android10.0 设备: FireFly RK3399 (ROC-RK3399-PC-PLUS) 前言 ini ...
- android录音函数,Android - 实现录音变声播放
变声功能大家都接触过,比如qq中发送一段变声消息,网络视频中演员经过处理的声音.其实这个功能实现起来并不复杂,因为声音处理的算法有大神已经帮我们写好,拿来用就行. 代码是用c写的,我们来稍微处理一下 ...
- android dbinfo函数,android SQLiteDatabase中的update函数用法?
创建数据库 Android 不自动提供数据库.在 Android 应用程序中使用 SQLite,必须自己创建数据库,然后创建表.索引,填充数据.Android 提供了 SQLiteOpenHelper ...
- android 回退函数,android浏览器研究-回退和前进
浏览器探究--回退和前进 前进: 在菜单中点击前进功能主线程会执行BrowserActivity.onOptionsItemSelected,它会调用Controller.onOptionsItemS ...
- android 响铃函数,android – 铃声一遍又一遍地播放(无限循环播放)
我遇到了类似的问题.事实证明,当播放铃声时,它将无限重复直到停止,而当播放通知声音时,它将只播放一次.所以我的猜测是,你的情况的区别在于是否在someFunctionToLookupAValidNot ...
最新文章
- Python SimpleHTTPServer 简单开发
- lucene集成IK实现中文分词检索
- CDN监控系统(三 业务架构)
- 算法与数据结构(冒泡排序,选择排序和插入排序的总结)
- 【推荐系统】基于用户的协同过滤算法
- BZOJXXXX: [IOI2000]邮局——四边形不等式优化初探
- SAP Spartacus用户登录的实现
- 数字三角形——递归、递推、记忆化搜索
- 阿里巴巴宣布架构调整;英伟达放大招!重磅发布 ​TensorRT 7 ,支持超千种计算变换;苹果、谷歌和亚马逊罕见结盟……...
- Metaspace泄漏排查
- 手机发布日期为什么保密?罗永浩这么说...
- python实现excel的覆盖写入和追加
- Atitit 减少财政支出之减少通讯支出 解决方案attilax总结
- 国美易卡设置cookie域,国美易卡匹配domain
- 如何申请CSDN博客?
- 春节攻防战即将打响,想要弯道超车的商家们,准备好了吗?
- Python编程:从入门到实践+爬虫开发与项目实战+网络编程基础+项目开发实战
- 云媒易:做好小红书推广的6个关键点
- matlab中区分fplot和plot,以及作图时sin(1./x)需要点除而不是除
- STC12C5A60S2单片机-双串口通信