Android 匿名共享内存C接口分析
来源:互联网 发布:猎受追缉by焉知冷暖 编辑:程序博客网 时间:2024/05/16 11:20
原址
在Android 匿名共享内存驱动源码分析中详细分析了匿名共享内存在Linux内核空间的实现,虽然内核空间实现了匿名共享内存,但仍然需要在用户空间为用户使用匿名共享内存提供访问接口。Android系统在用户空间,C++应用程序框架层,Java层分别提供了访问接口
本文首先介绍匿名共享内存在用户空间提供的C语言接口,在后续文章中在介绍Android匿名共享内存的C++及Java接口,从而全面理解并掌握Android匿名共享内存的使用。
1)匿名共享内存的创建
system\core\libcutils\ashmem-dev.c
ASHMEM_DEVICE的宏定义如下:
函数ashmem_create_region首先通过open函数进入匿名共享内存驱动打开/dev/ashmem设备文件,打开过程在Android 匿名共享内存驱动源码分析中已经详细分析了,就是在匿名共享内存初始化过程创建的slab缓冲区ashmem_area_cachep中创建并初始化一个ashmem_area结构体了,接着通过IO命令来修改该ashmem_area结构体的成员name和size,具体设置过程请查看Android 匿名共享内存驱动源码分析。匿名共享内存的创建过程可以归纳为以下三个步骤:
1. 打开/dev/ashmem设备文件;
2. 修改匿名共享内存名称
3. 修改匿名共享内存大小
2)设置匿名共享内存属性
通过Ioctl命令控制系统调用进入内核空间的匿名共享内存驱动来设置匿名共享内存块的属性值,比如设置匿名共享内存块的锁定与解锁,设置匿名共享内存块的大小,名称,保护位等属性信息。Android对匿名共享内存的这些属性访问也提供了相应的C语言接口:1. 设置匿名共享内存的保护位
2.锁定匿名共享内存块
3.解锁指定匿名共享内存块
4.获取创建的匿名共享内存大小
无论是匿名共享内存的属性设置还是获取,都是直接使用ioctl系统调用进入匿名共享内存驱动中实现的,关于匿名共享内存驱动是如何实现这些功能的,在Android 匿名共享内存驱动源码分析中有详细的介绍,这里就不重复介绍了。这里我们知道Android提供的匿名共享内存C语言接口比较简单。了解了匿名共享内存的C语言接口之后也为以后学习匿名共享内存的C++接口提供基础。
0 0
- Android 匿名共享内存C接口分析
- Android 匿名共享内存C接口分析
- Android 匿名共享内存Java接口分析
- Android 匿名共享内存C++接口分析
- Android 匿名共享内存C++接口分析
- Android 匿名共享内存C++接口分析
- Android 匿名共享内存Java接口分析
- Android 匿名共享内存驱动源码分析
- Android 匿名共享内存驱动源码分析
- Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析
- Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析
- Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析
- Android系统匿名共享内存(Anonymous Shared Memory)Java调用接口分析
- Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析
- Android Binder 分析——匿名共享内存(Ashmem)
- android ashmem 匿名共享内存
- Android匿名共享内存笔记
- Android系统匿名共享内存Ashmem
- Java面向对象设计模式(十五)——观察者模式(Observer)
- 带着老爸老妈游太湖园博园
- jquery.Nivoslider.js丰富图片插件参数详解
- Eclipse智能提示及快捷键
- 湖北荆州刘氏族谱:士昌人运启,维宜守天则。
- Android 匿名共享内存C接口分析
- sql中 limit 和 top
- 编程笔记网址
- Android 6.0 AppOps 简介
- Linux内核sk_buff结构分析
- Oracle备份与恢复方案设计及运维:23个典型问题解答及经验分享
- php中heredoc与nowdoc的使用方法
- 日期工具类
- 捕获程序异常并输出Log到屏幕上