社区
Linux_Kernel
帖子详情
设备驱动程序是按照什么顺序执行的
yel617
2010-05-27 02:06:57
学习写驱动有段时间了,仿照着别人的,也写了几个简单的驱动程序,一直没弄清楚,驱动是怎么执行的
在insmod后首先应该是到xxx_init()函数里去注册设备号,设备注册后接下来是执行哪个函数?
有没有高手给讲解下,这个顺序是怎么样的啊?
...全文
477
19
打赏
收藏
设备驱动程序是按照什么顺序执行的
学习写驱动有段时间了,仿照着别人的,也写了几个简单的驱动程序,一直没弄清楚,驱动是怎么执行的 在insmod后首先应该是到xxx_init()函数里去注册设备号,设备注册后接下来是执行哪个函数? 有没有高手给讲解下,这个顺序是怎么样的啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sandyzy66
2010-11-11
打赏
举报
回复
一个系统调用read把CPU从用户态转到核心态,经过虚拟文件系统VFS传入到设备相关的驱动程序中file_operations的真正实现函数read,这个系统调用可能引发内核中很多管理模块的执行,假如驱动中发现设备没有可用的数据时对于阻塞型的调用,驱动程序会把与其相关联的用户执行线程挂起休眠,从而让出了CPU实现了进程调度器的调度。
glacierful
2010-06-07
打赏
举报
回复
驱动的机制类似于回调函数。init就是注册,不过同时会做一些申请资源、检查设备状态的事情。
linux的驱动机制感觉挺简单的,但具体到某一类型的驱动,linux为了提供一个统一的接口,其中的关系还是挺复杂的。
linux的驱动,不同的内核版本,其差异还是挺大的。
这是我的一点理解。
Wenxy1
2010-06-07
打赏
举报
回复
呵呵,init初始化设备手,驱动程序暂时不执行了。
1. 对于字符设备,块设备,通过标准的文件系统调用来访问这些设备,例如用fopen() API 来打开一个设备,FILE fp=fopen("/dev/mtdblock1", "r_"); /* 打开/dev/mtdblock1这个块设备,以便读和写 */.
2. 对于网络设备,用socket系统调用,send即把数据写入到网络设备里,recv即把设备里的数据读出来。
因此,驱动程序在完成对设备的初始化后,一般需要用户态的程序(最常见的方式),或者内核态的一些模块/内核线程来访问。
yel617
2010-06-06
打赏
举报
回复
xxx_init()函数里好像主要就是注册,没有什么其他的操作
Apple_Demo
2010-06-06
打赏
举报
回复
按照xxx_init()函数里面的调用顺序执行啊。
Tony2251
2010-06-05
打赏
举报
回复
mark,学习一下。
帅得不敢出门
2010-06-05
打赏
举报
回复
驱动可能会不定时启动一些线程等待请求的发生
如果与io口关联 申请了中断号
那么发生中断 就会进入相关数据处理 如果此时用户进行交互可以得到数据 如果无交互 那么驱动可能继续
去处理中断
具体跟实现有关
yel617
2010-06-04
打赏
举报
回复
顶起来,看看更多人的看法
hzcpig
2010-06-04
打赏
举报
回复
驱动程序的初始化完成两方便动作
一是与具体设备的关联,表现在注册设备号
二是与具体设备上的操作所对应的回调函数的关联,表现在注册file_operation上。
这两部就可以把对某个设备的某种动作(read/write/ioctl)对应到具体的执行函数上,驱动程序的任务就完成了。
yel617
2010-06-04
打赏
举报
回复
驱动程序注册的时候除了注册设备号外,还注册了哪些东西啊?
hallowwar
2010-06-04
打赏
举报
回复
驱动是底层的,对应用层是透明的,只提供接口。 相当于库函数吧。
gtj8521
2010-05-28
打赏
举报
回复
这个注册的struct file_operations 结构就是在__init的时候调用 register_chrdev()函数来注册的
lisan04
2010-05-28
打赏
举报
回复
驱动程序是等着别人来调用的,注册成功之后,就基本不做事情了,如果上层过来一个请求,比如read请求,则就会调用驱动程序中的read。有点类似基于事件。。
linux_man1987
2010-05-28
打赏
举报
回复
我也想知道
yel617
2010-05-28
打赏
举报
回复
init()函数完成对驱动程序的初始化,注册设备号
struct file_operations结构体 是连接设备编号与设备操作的
一开始执行init()函数 那struct file_operations结构体 是什么时候注册的?
2楼说是“字符设备的驱动在注册时会注册一个struct file_operations结构体”,不是很解
lkncjy
2010-05-27
打赏
举报
回复
驱动就是一些函数,用哪个就调哪个。
pottichu
2010-05-27
打赏
举报
回复
驱动 init 完成以后,基本就不干活了,
被动的由应用程序去调用,或者发生中断的时候处理数据,或者有内核线程的话,会自己干些活。。
gtj8521
2010-05-27
打赏
举报
回复
字符设备的驱动在注册时会注册一个struct file_operations结构体,里同会注册一些读、写、或者是ioctl等函数供你的应用层调用,至于什么时候用,用哪个,就由应用来决定的。
chenee543216
2010-05-27
打赏
举报
回复
注册各种接口而已,注册之后一般不动,按照需要 被 调用。
驱动只做机制,怎么运行,何时运行是别人做的,比如键盘驱动,只在有键盘中断的时候处理一下
操作系统——中断处理程序及
设备
驱动程序
中断处理程序及
设备
驱动程序
中断是指CPU在
执行
一个程序时,对系统中发生的某个事件做出的一个反应,它在操作系统中有着重要的有着重要的地位,时多道程序得以实现的基础。 引入缓冲区的原因: 外部中断:简称中断,是由CPU以外的外部事件引起的 陷入:又称为异常,是由CPU
执行
指令过程中检测到的一些内部事件引起的 系统对多中断源有两种处理方式 屏蔽中断 嵌套中断 I/O中断处理的工...
设备
驱动简介
设备
驱动一、
设备
驱动程序
简介二、
设备
的分类和特点1.字符
设备
2.块
设备
3.网络
设备
一、
设备
驱动程序
简介 系统调用是操作系统内核和应用程序之间的接口,
设备
驱动程序
是操作系统内核和机器硬件之间的接口。
设备
驱动程序
为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件只是个
设备
文件,应用程序可以象操作普通文件一样对硬件
设备
进行操作。
设备
驱动与用户程序的区别: 1、应用程序以main 开始;
驱动程序
没有main,它以一个模块初始化函数作为入口。 2、应用程序从头到尾
执行
一个任务;
驱动程序
完成初始化之后不再
设备
驱动: Linux系统下的字符
设备
驱动程序
编程
一、实验目的 通过一个简单的
设备
驱动的实现过程。学会Linux中
设备
驱动程序
的编写。 二、实验环境 Ubuntu20.04TSL,Linux5.10.0 三、实验内容 1、编写一个字符
设备
驱动程序
,并在
设备
的打开操作中打印主次
设备
号; 2、编写一个用户测试程序,实现
设备
的读操作。 四、实验原理 实验中用到的系统调用函数(包括实验原理中介绍的和自己采用的),实验步骤 字符
设备
是指只能一个字节一个字节读写的
设备
,不能随机读取
设备
内存中的某一数据,读取数据需要按照先后
顺序
。字符
设备
是面向流的
设备
,常见的字符
设备
有
操作系统13:中断处理程序和
设备
驱动程序
当一个进程请求 I/O 操作时,该进程将被挂起,直到 I/O
设备
完成 I/O 操作后,
设备
控制器便向 CPU 发送一个中断请求,CPU 响应后便转向中断处理程序,中断处理程序
执行
相应的处理,处理完后解除相应进程的阻塞状态。具体的 I/O 操作是在
设备
控制器的控制下进行的,因此,在
设备
忙于传送数据时,处理机又可以去干其它的事情,实现了处理机与 I/O
设备
的并行操作。CPU 的绝大部分时间都处于等待 I/O
设备
完成数据 I/O 的循环测试中,造成对 CPU 的极大浪费。
Linux系统下的字符
设备
驱动程序
编程
实验项目名称:
设备
驱动: Linux系统下的字符
设备
驱动程序
编程 一、实验目的 通过一个简单的
设备
驱动的实现过程。学会Linux中
设备
驱动程序
的编写。 深入理解内核驱动模块编写和编译过程。 二、实验内容 1、编写一个字符
设备
驱动程序
,并在
设备
的打开操作中打印主次
设备
号; 2、编写一个用户测试程序,实现
设备
的读操作。 三、实验涉及的系统调用函数以及内核函数 1、分配
设备
号函数register_chrdev( ),用于指定
设备
号的情况。函数原型为: int register_chrdev(unsigned i
Linux_Kernel
4,436
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章