linux驱动(第一课,导言)

linux驱动模块的程序架构,是SOD设计思想的完美体现。
驱动程序都是被动接收调用的函数,其运行时机,都是在系统需要进行IO时,由系统发起调用。
函数接口是系统使用驱动的唯一方式。所以,我们看到,系统为驱动模块提供了一系列的结构体,并希望驱动模块自行控制注册和注销。
一类驱动程序,尤其特定的框架,被称为驱动框架(Driver Framework)。所有的驱动都是类似的实现方法,就是构造核心的数据结构体,然后注册到内核中。所以,学习驱动开发,主要就是学习这些核心的数据结构和对应的API。驱动中灵活的部分,是驱动框架中定义的函数接口,所注册的具体操作函数的代码。
我们在学习的过程中,最需要关注的,就是驱动中的核心结构体。我们要思考,设计这些结构体的现实意义是什么?为什么要这要进行数据布局?设备是如何被抽象和建模,进而变成这些结构体的?
加卸载函数,是驱动模块中的第二个重要部分。它们是将核心结构体注册到系统中的实现者。驱动模块被编译成KO文件时,只是一些静态的数据段(Data),和一些静态的文本段(Text Instruction),只有挂载函数运行后,才能将各种指针相互关联起来,从而使得系统能够索引到数据对象,并通过数据对象索引到需要的函数接口。
操作函数,是驱动模块中的第三个重要部分。它们是具体实现IO操作的函数。我们要思考,操作函数是谁调用了它们?操作函数的运行时机是什么时候?当操作函数被调用时,CallStack是如何生长的?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值