驱动开发学习day3-->自动创建设备文件 区分设备文件 ioctl 驱动互斥

本文介绍了Linux驱动开发中如何自动创建设备文件,使用class_create和device_create函数,并展示了ioctl的使用方法。还探讨了驱动程序的互斥访问控制,包括互斥锁、信号量、原子变量和自旋锁的应用。
摘要由CSDN通过智能技术生成

1 自动创建设备文件

 创建设备文件的方法:1 手动创建--->sudo mknod /dev/haha0 c 250 0
                                     2  自动创建--->内核函数

Linux内核为我们提供了一组函数,可以用来在模块加载时自动在/dev目录下创建相应的设备节点(设备文件),并在模块卸载时删除该设备节点。


    内核函数:1 class_create-->创建一个设备文件类--》对应一类设备
                      2 device_create--->创建一个设备文件--》对应一个设备

1.1 创建一个设备文件类--》class_create

#define class_create(owner, name)        
 ({                        
static struct lock_class_key __key;    
__class_create(owner, name, &__key);    
})

owner:THIS_MODULE表示模块本身
name:设备模块名
返回值:struct class类型指针(设备文件类指针)

1.2 创建一个设备文件--》device_create

struct device *device_create(struct class *class, struct device         *parent,  dev_t devt, void *drvdata, const char *fmt, ...)
*class:设备文件类指针,是class_create的返回值
*parent:父设备,一般为NULL。
devt:设备号。包括主设备号和次设备号
*drvdata:私有数据,若无,给NULL.
*fmt:设备文件名(haha0/haha1)
...:可变参数
返回值:成功,struct device指针。失败ERR,需要进一步处理

1.3销毁设备文件--》device_destroy

void device_destroy(struct class *class,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值