LINUX设备驱动程序笔记

本文详细介绍了Linux设备驱动程序的各个方面,包括设备驱动程序的分类,如何构造和运行模块,字符设备驱动程序的主次设备号、数据结构以及注册过程,最后探讨了并发和竞态条件下的管理策略,如信号量和自旋锁的应用。
摘要由CSDN通过智能技术生成

一、设备驱动程序简介

1.内核功能划分
进程管理,内存管理,文件系统,设备控制,网络。
设备的分类:字符设备,块设备,网络接口。

二、构造和运行模块

单个源文件编译模块:obj-m := hello.o
多个源文件编译模块:obj-m := module.o
module-objs := file1.o file2.o
make -C ~/kernel-2.6 M=‘pwd’ modules
首先进入到kernel目录执行make,(即执行内核顶层的Makefile文件)。M=选项让该Makefile在构造modules目标之前返回到模块源码目录。然后,modules目标指向obj-m变量中设定的模块。即上面的hello.o或者module.o。

三、字符设备驱动程序

1.主设备号和次设备号
对字符设备的访问是通过文件系统内的设备名称进行的。主设备号标识设备对应的驱动,但多个驱动有可能共享主设备号。次设备号确定设备文件所代表的设备。
2.设备编号的表达
设备编号用dev_t类型表示,要提取主次设备编号,应使用:
MAJOR(dev_t dev);
MINOR(dev_t dev);
主次设备号转换为dev_t,使用:MKDEV(int major, int minor);
3. 分配和释放设备编号
静态分配设备编号必须先知道系统中哪些主设备号是未被使用的,优点是可以提前创建设备节点,以供用户态访问。缺点是移植性差。
动态分配设备编号缺点是无法预先创建设备节点,

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值