Linux内核驱动----自动创建设备文件

自动创建设备文件

创建设备文件的方式:
1.手动创建:sudo mknod /dev/haha0 c 250 0
2.自动创建—》使用内核函数

linux内核为我们提供了一组内核函数,用于在模块加载时自动在/dev目录下创建响应的设备文件,并在卸载时删除该设备文件。

创建流程:
1 class_create—》创建设备文件类
2 device_create—》创建设备文件
删除流程:
3 device_destory 删除设备文件
4 class_destory 删除设备文件类

设备 主设备–》一类设备
次设备–》该类设备中的某一个设备
设备文件:一个设备文件对应一个次设备

1.class_create–>创建设备文件类

struct class *class_create(owner,name)
//参数1:owner:表示模块本身THIS_MODULE
//参数2:name:设备模块名
//返回值:指向设备文件类的指针(struct class表示设备文件类)

创建设备文件类
创建设备文件类2

2.device_create创建设备文件

struct device *device_create(struct class *class,struct device *parent,sev_t devt,void *drvdata,const char *fmt,....)
//参数1:*class:指向设备文件类的指针
//参数2:*parent:指向符设备的指针,一般为NULL
//参数3:devt:设备号由主次设备号构成
//参数4:*drvdata:指向设备私有数据,若无,给NULL;
//参数5:*fmt:设备文件名(haha0/haha1...)
//...可变参数
//返回值:成功struct device *,失败err,需要判断

实例:
创建设备文件

3.device_destroy删除设备文件

void device_destroy(struct class *class, dev_t devt)
//作用:删除设备文件
//参数1:*class:指向设备文件类的指针
//参数2:devt:设备号

4.class_destory 删除设备文件类

void class_destory(struct class *cls)
//作用:删除设备文件类
//cls:指向设备文件类的指针

删除设备文件和设备文件类

测试步骤:

1 sudo insmod hello.ko2 dmesg |tail
3 ls -l/dev/hah*–》查看是否生成了设备文件haha0/haha1?
4 sudo ./test
5 sudo ./test1
open haha1 ok
6 sudo rmmod hello.ko
7 ls -l/dev/hah*—>查看设备文件是否被删除
测试步骤

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值