ELDD读书笔记:第五章 字符设备驱动程序

来源:互联网 发布:周振兴 mysql 编辑:程序博客网 时间:2024/05/23 12:22

    • 字符设备驱动程序基础
      • 驱动标识符
      • 字符驱动程序基本模块
      • 数据流
    • 设备实例
    • 检测数据可用性
    • 和并行端口交互
    • RTC子系统
    • 伪字符驱动设备
    • 混杂驱动程序
    • 字符设备驱动程序警告
    • 查看源代码

0 字符设备驱动程序基础

[驱动标识符]

c:字符驱动设备b:块设备l:符号链接bash>ls -l /devtotal 0驱动程序类型            主设备号|次设备号crw-------  1 root root    5, 1 Jul 16 10:02 consle...lrwxrwxrwx  1 root root       3 Oct 6  10:02 cdrom->hdc...brw-rw      1 root disk    3, 0 Oct 1        hda...crw-------  1 root tty     4, 1 Oct 6  10:20 tty1

[字符驱动程序基本模块]

1 初始化例程init()。负责初始化设备并且将驱动程序和内核的其他部分通过注册函数实现无缝连接
2 入口函数集。如open()、read()、write()、ioctl()、llseek(),这些函数直接对应相应的I/O系统调用,由用户应用程序通过对应的/dev节点调用。
3 中断例程、底半部例程、定时器处理例程、内核辅助线程以及其他的组成部分。他们对于用户应用程序是透明的。

[数据流]

1 与特定设备相关的数据结构。此数据结构保存着驱动程序使用的信息。
2 struct cdev,针对字符设备驱动程序的内核抽象。这个结构通常嵌入在前面讨论的特定设备结构中。
3 struct file_operations,包含所有设备驱动程序入口函数的地址。
4 struct file,包括关联/dev节点的信息。

1 设备实例

2 检测数据可用性

3 和并行端口交互

4 RTC子系统

5 伪字符驱动设备

6 混杂驱动程序

7 字符设备驱动程序警告

8 查看源代码