open方法

open方法提供给驱动程序以初始化的能力,在大部分驱动程序汇总,open应该完成以下工作:

1. 检查特定设备的错误,如设备为准备就绪或者硬件问题;

2. 如果设备是首次打开,则对其进行初始化;

3. 如有必要,更新f_op指针;

4. 分配并填写置于filp->private_data里面的数据结构;

open方法的原型如下:

 int (*open) (struct inode *, struct file *);

其中inode参数在其i_cdev字段中包含了我们所需要的信息,即我们先前设置的cdev结构;

release方法

release方法的作用正好与open相反,这个方法完成以下工作:

1. 释放由open分配的、保存的filp->private_data中的所有内容;

2. 在最后一次关闭操作时关闭设备;

release方法的原型如下:

 int (*release) (struct inode *, struct file *);
close系统调动与release方法

并不是每个close系统调用都会引起对release方法的调用,只有那些真正释放设备数据结构的close调用才会调用这个方法。内核对每个file结构维护一个引用计数器;无论是fork还是dup,都不会创建数据结构(仅由open创建),它们只是增加了已有数据结构中的计数;只有在file结构的计数器为0时,close系统调用才会执行release方法,这只是删除结构是才发生;release和close的关系保证了对于每次open驱动程序,只有一次release调用;

flush在应用程序每次调用close时都会被调用;

内核在进程退出的时候,通过在内部使用close系统调用自动关闭所有相关文件;

最新文章

  1. 当我们在谈论kmeans(2)
  2. 【Java EE 学习 69 中】【数据采集系统第一天】【SSH框架搭建】
  3. poj2492(种类并查集/各种解法)
  4. css清楚浮动的几种常用方法
  5. nssm在windows服务器上部署nodejs,coffee启动方式
  6. QRCode.jar生成二维码
  7. Hybrid App简介
  8. js hashMap
  9. iOS 6分享列表——UIActivityViewController详解
  10. 跨平台的C++应用和UI开发库 QT
  11. mysql数据库连接池使用(二)实现自己的数据库连接池
  12. 【leetcode80】Reverse Vowels of a String(元音字母倒叙)
  13. js算法初窥02(排序算法02-归并、快速以及堆排序)
  14. SQLServer之创建全文索引
  15. 前端测试框架Jest系列教程 -- Expect(验证)
  16. [福大软工] Z班 团队作业——系统设计 作业成绩
  17. poj3468 线段树的懒惰标记
  18. 测试中,重现偶发的BUG问题。
  19. VS遇到的问题记录
  20. as3.0 当fla里面有TLF文本的时候,加载声音会出现错误

热门文章

  1. luogu2568GCD题解--欧拉函数
  2. C#中DateTime.Ticks
  3. 发现护考上机考试的一个bug:附软件截图(模拟软件)
  4. ngnix反向代理后获取用户真实ip及https配置
  5. IO 理论 SOCK理论
  6. 系统模块 sys 函数的调用
  7. 文件 file open函数的打开及 函数的调用
  8. 【3】Kafka安装及部署
  9. 程序员和IT员不能错过的网站
  10. HashMap 和 Hashtable 有什么区别?(未完成)