binder中的mmap
来源:互联网 发布:宁德电脑数据恢复专家 编辑:程序博客网 时间:2024/04/30 07:26
struct binder_state
{
int fd;
void *mapped;
unsigned mapsize;
};
struct binder_state *binder_open(unsigned mapsize)
{
struct binder_state *bs;
bs = malloc(sizeof(*bs));
if (!bs) {
errno = ENOMEM;
return 0;
}
//典型的以miscdevice 形式实现的设备即特殊的字符设备
bs->fd = open("/dev/binder", O_RDWR);
if (bs->fd < 0) {
fprintf(stderr,"binder: cannot open device (%s)\n",
strerror(errno));
goto fail_open;
}
bs->mapsize = mapsize;
//mmap 将 bs->fd 文件mapsize 长度映射到本进程的地址空间,NULL 表示起始地址由系统指定
//MAP_PRIVATE:写入映射区的不会再写到源文件,且不允许其他进程共享
//MAP_SHARED:写入映射区的会再写到源文件,且允许其他进程共享
//
//PROT_READ:映射区的保护方式,分为可读,可写,可执行
//最后一个参数表示从文件的0地址开始映射
bs->mapped = mmap(NULL, mapsize, PROT_READ, MAP_PRIVATE, bs->fd, 0);//返回映射内存的起始地址
if (bs->mapped == MAP_FAILED) {
fprintf(stderr,"binder: cannot map device (%s)\n",
strerror(errno));
goto fail_map;
}
/* TODO: check version */
return bs;
fail_map:
close(bs->fd);
fail_open:
free(bs);
return 0;
}
void binder_close(struct binder_state *bs)
{
munmap(bs->mapped, bs->mapsize);
close(bs->fd);
free(bs);
}
- binder中的mmap
- Binder mmap
- Kernel 及 binder mmap实现
- Linux Kernel 及 binder mmap实现
- 理解java中的mmap
- Linux中的mmap函数
- Python中的mmap模块
- python中的mmap和array
- linux中的mmap与unmap
- 摄像头v4l2采集中的mmap
- Linux中的mmap的使用
- Android中的binder机制
- Android中的binder
- Binder中的代理模式
- IPC中的Binder机制
- binder中的红黑树
- Android中的Binder机制
- Android 中的 Binder 机制
- 把脉VC++笔记02
- WPF制作的一个小功能,输入智能提示(IntelliSense)
- 查找最长回文
- NFS简介和配置 一
- hdu3341ac+状态dp
- binder中的mmap
- iOS动画效果和实现
- Java线程池
- C++学习笔记6——函数(重点)
- Pascal数塔问题
- 设计模式之命令模式
- Android中Activity的标题设置的知识总结
- 常用SVN命令
- state与status 到底应该是谁?