qt如和调用linux底层驱动_Linux系统调用怎么和内核或底层驱动交互的

本文探讨了Linux系统调用如何与内核或底层驱动进行交互,重点介绍了file_operations、file和inode三个关键内核数据结构的作用。通过open、write、read等系统调用,经由文件系统找到相应的设备驱动,实现应用程序与硬件的通信。在open过程中,通过设备号匹配到对应的file_operations,从而调用驱动程序的函数。
摘要由CSDN通过智能技术生成

学习Linux系统下驱动程序开发已有大半年时间,心中一直有个疑惑:那就是诸如open、write、read等系统调用是怎么和

内核或底层驱动建立起联系的呢?今天将自己的一些粗略的理解总结如下。

学过Linux系统下驱动程序开发的都知道,大部分的基础性的驱动操作都包括3个重要的内核数据结构,称为file_operations,

file,和inode。我们需要对这些结构有个基本了解才能够做大量感兴趣的事情。

1、struct file_operations是一个把字符设备驱动的操作和设备号联系在一起的纽带,是一系列指针的集合,每个被打开的文件

都对应于一系列的操作,这就是file_operations,用来执行一系列的系统调用。

2、struct file代表一个打开的文件,在执行file_operation中的open操作时被创建,这里需要注意的是与用户空间inode指针的区

别,一个在内核,而file指针在用户空间,由c库来定义。

3、struct inode被内核用来代表一个文件,注意和struct file的区别,struct inode一个是代表文件,struct file一个是代表打开的文件

struct inode 包括很重要的两个成员:

dev_t       i_rdev     设备文件的设备号

struct cdev *i_cdev 代表字符设备的数据结构,struct inode结构是用来在内核内部表示文件的。同一个文件可以被打开好多

次,所以可以对应很多struct file,但是只对应一个struct inode.

应用层调用open函数,首先会发出open系统调用,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值