*dev=filp->private_data;这一句的理解
来源:互联网 发布:淘宝网粉色连衣裙 编辑:程序博客网 时间:2024/06/01 11:09
ldd3中说到open应完成以下工作:
1.检查设备特定的错误(注入设备未就绪或类似的硬件问题)。
2.如果设备是首次打开,则对其进行初始化。
3.如有必要,更新f_op指针。
4.分配并填写置于filp->private_data里的数据结构。
关于第4点,一直心存余虑,不明白是什么意思,看网上写的很多其他的例子,也没有做第4点的操作。
其实ldd3上面已经在release方法里面做了说明,“并不是每个close系统调用都会引起对release方法的调用,只有真正释放设备数据结构的close才会调用release方法的调用。内核对每个file结构维护其被使用多少次的计数器。对于dup/fork等系统调用,并不会创建新的数据结构(仅由open创建,在open函数中通过申请并初始化的cdev结构,运用container_of求出包含cdev的scull_dev结构,并赋值给filp->private_data,从而分配一个新的数据结构),他们只是增加对数据结构的计数。当file结构的计数减为零时,才会调用close,执行release.”
我觉得这样设计有两个目的,一是节省系统资源,二是可以与进程的设计理念相一致。
————————————————————————————————————————————————————————————
我自己看宋宝华的linux设备驱动开发详解,93页写到私有数据指针private_data在设备驱动中背广泛使用,大多数指向设备驱动自定义用于描述设备的结构体。
- *dev=filp->private_data;这一句的理解
- *dev=filp->private_data;这一句的理解
- *dev=filp->private_data;这一句的理解
- 关于lld3例子open中filp->private_data = dev;这一句的理解
- Linux设备驱动模型的private_data 简单理解
- private_data
- file*中神秘的private_data指针
- /dev/fd/ 的动态当前的理解
- Linux的/dev/shm的简单理解
- >/dev/null 2>&1的理解
- 关于/dev/console的个人理解
- filp-chip
- Filp Game
- epoll实现:回调、红黑树及file中万能的private_data
- file结构体中private_data指针的疑惑
- Linux目录下/dev/shm的理解和使用
- Linux目录下/dev/shm的理解和使用
- dev/iommu_group/iommu_domain 三者关系的简单理解
- 九个让人难以置信的HTML5和JavaScript实验
- 【二分图+最大匹配】北大 poj 2536 Gopher II
- Android提高十六篇之使用NDK把彩图转换灰度图
- 控件讲课
- DataList或Repeater控件的分页
- *dev=filp->private_data;这一句的理解
- linux and windows
- android的文件操作
- ofstream和ifstream详细用法
- 记正式开始工作
- 读取excel文件(使用perl处理)
- 保存Activity的状态
- 一定要注意散热问题,否则会吃大夸
- Java程序轻松输出到JSP页面