字符设备驱动开发之数据结构
来源:互联网 发布:kuka离线编程软件 编辑:程序博客网 时间:2024/06/05 03:13
接下来的几部分,我想通过简单的字符设备程序来了解设备驱动开发的基本原理以及流程。
由于用户程序是通过设备文件来和具体的硬件打交道,而对设备文件的操作无非是通过一系列的系统调用如open,close,read,write等来实现;对具体硬件设备的读写时通过设备驱动程序来完成。但是如何将系统调用和设备驱动程序联系起来呢?这里就涉及到一个非常重要的数据结构:
这个结构的每一个成员的名字都对应着一个系统调用。每个驱动程序注册时都会绑定这样的一个数据结构。当用户进程利用系统调用在对设备文件进行诸如read/write操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数。这是linux的设备驱动程序工作的基本原理。既然是这样,则编写设备驱动程序的主要工作就是编写子函数,并填充file_operations的各个域。
struct file代表一个打开的文件,在执行file_operations中的open操作时被创建,file指针在用户控件定义;
该结构的说明如下:
struct inode 结构用来在内核中代表一个文件,同一个文件可能被打开多次,有多个file结构,但是只有一个inode结构。
其中有两个非常重要的成员,
dev_t i_rdev 保存设备文件的设备号
struct cdev *i_cdev 代表该文件对应的字符设备结构
参考网址:
http://www.embedu.org/Column/Column09.htm
http://space.itpub.net/14805538/viewspace-445624
- 字符设备驱动开发之数据结构
- 开发学习记录之字符设备驱动
- Linux驱动开发之字符设备
- linux驱动开发之字符设备框架
- linux驱动开发之字符设备框架
- 字符设备驱动开发
- linux驱动开发之字符设备--自动创建设备节点
- 字符设备驱动数据结构之File_operations结构体
- 字符设备驱动数据结构之File_operations结构体
- Linux设备驱动之《字符设备驱动》
- 设备驱动之二----字符设备驱动
- 字符设备驱动之I2C设备驱动
- Linux设备驱动之字符设备驱动
- Linux设备驱动之字符设备驱动
- Linux设备驱动之字符设备驱动
- Linux设备驱动之字符设备驱动
- Linux设备驱动之字符设备驱动
- linux设备驱动之字符设备驱动
- 学Delphi的方法
- 软件逆向分析方法小结
- 第一场笔试感悟
- 专为iPhone开发者准备的50款经典开源应用
- Windows Mobile获取通话记录 C#
- 字符设备驱动开发之数据结构
- 写点什么吧.
- JS图片预览
- haproxy + varnish cache配置
- Android 显示不满屏的问题解决
- s4s-elt-character:Non-whitespace characters
- CreateFileMapping的MSDN翻译和使用心得
- Fix it to use EXTRA_CFLAGS
- 3、ETL数据清洗、一致化子系统