关于mknod延伸到的知识点

本文介绍了mknod命令用于创建设备文件的标准形式,并详细解释了设备文件名、块设备和字符设备的区别,以及主设备号和次设备号的作用。同时,文章还探讨了在Linux驱动中如何自动关联设备名和设备号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mknod的标准形式:mknod DEVICENAME {b/c} MAJOR MINOR

1.DEVICENAME是要创建的设备文件名,可以包含目录

2.b和c分别表示块设备和字符设备

3.MAJOR和MINOR分别表示主设备号和次设备号

示例:mknod /dev/myDevice c 128 512

联想一:

主设备号:用来表示一个特定的驱动程序,例如在insmod加载驱动时分配的一个主设备号

次设备号:用来表示该驱动的各设备


当执行mknod /dev/myDevice c 128 512时,会把/dev/myDevice 映射到主设备号为128的驱动,这样操作myDevice设备才会调用相关驱动。


联想二:

在驱动中关于主设备号的创建:

major = register(0, "myDriver", &myFile_fops);//参数1为0时表示系统自动生成主设备号,不为0时,参数1表示要申请的主设备号,为了防止为设备号冲突,需要用cat /proc/devices查看已经注册的主设备号。


联想三:

根据一知道我们要操作设备名时需要需要将设备名与设备号关联,mknod是创建设备节点,即做了关联操作,如何在linux驱动中自动的关联设备名和设备号?

当我们注册驱动时会在linux系统的/sys目录下生成设备信息,mkdev能根据这些设备信息创建设备节点,即需要在驱动中提供设备信息。两条语句:

major = register(0, "myDriver", &myFile_fops);

drv_class = class_create(THIS_MODULE, "myDriver");
drv_class_dev = device_create(drv_class, NULL, MKDEV(major, 0), NULL, "cgl");//创建/dev/cgl设备节点

只提供借鉴,在最新的内核中已经不这么申请设备号....

联想四:

一个字符设备要注册设备号、建立设备节点


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值