天嵌 ARM开发社区

 找回密码
 注册
查看: 1863|回复: 4

不同的混杂设备能共用一个次设备号吗

[复制链接]
friendpy 发表于 2012-3-16 09:13:00 | 显示全部楼层 |阅读模式
本帖最后由 friendpy 于 2012-3-16 09:13 编辑

混杂设备的主设备号都是10,我觉得不同混杂设备之间区分的依据就是次设备号。

可是2.6.30.4的内核中给的drives/char下面的好几个驱动都是用的混杂设备,设备号都是一样的

static struct miscdevice misc = {
        .minor        = MISC_DYNAMIC_MINOR,
        .name        = DEVICE_NAME,
        .fops        = &dev_fops,
                               }

MISC_DYNAMIC_MINOR是在include/linux/Miscdevice中定义的:

#define MISC_DYNAMIC_MINOR        255

就是说他的次设备号都是255.
这样子是不是会出错啊      
lvlei 发表于 2012-3-16 11:16:51 | 显示全部楼层
不会出错,我谢了一个ad驱动,用的也是杂设备,在ls -l /dev中显示如下:
crw-rw----    1 root     root       10,  56 Mar 16 11:08 lvl-adc
他的次设备号应该是56而不是我定义的255
MISC_DYNAMIC_MINOR表示是系统自动分配次设备号
embedsky_lhh 发表于 2012-3-16 13:21:18 | 显示全部楼层
主设备号是misc 混杂设备驱动主设备号是10,次设备号是动态分配的,一般与驱动加载顺序有关。
 楼主| friendpy 发表于 2012-3-16 13:26:47 | 显示全部楼层
lvlei 发表于 2012-3-16 11:16
不会出错,我谢了一个ad驱动,用的也是杂设备,在ls -l /dev中显示如下:
crw-rw----    1 root     root  ...

那有可能在内核程序还有判断的机制存在,  如果要申请的次设备号已被使用,就再另分配一个没用的次设备号,会不会是这样呢。懒得去读内核程序了,太累了,就当作是这样的吧。

if (misc->minor == MISC_DYNAMIC_MINOR) {
                int i = DYNAMIC_MINORS;
                while (--i >= 0)

。。。。

#define DYNAMIC_MINORS 64

后面又长又繁,唉,不去看了
 楼主| friendpy 发表于 2012-3-16 13:44:18 | 显示全部楼层
embedsky_lhh 发表于 2012-3-16 13:21
主设备号是misc 混杂设备驱动主设备号是10,次设备号是动态分配的,一般与驱动加载顺序有关。

原来是这样,我想我应该去板子上验证一下,谢谢版主!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-9-30 05:40 , Processed in 1.027278 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表