天津市网站建设_网站建设公司_轮播图_seo优化
2025/12/29 17:36:23 网站建设 项目流程

主次设备号

设备号是什么

  1. Linux 中每个设备都有一个设备号,设备号由主设备号和次设备号两部分组成。主设备号用于区分设备的类型,次设备号用于区分同一类型的多个设备(对应硬件实体)。
    • 相同硬件设备,相同驱动。一般其主设备号一致,次设备号不同。
  2. 设备号数据类型:dev_t原型是一个32位无符号整形类型的值(unsigned int ),其中高12位表示主设备号,低20位表示次设备号
    • 设备号的取值范围理论上如下:
      • major:0 ~ 4095
      • minor:0 ~ 1,048,575
        但实际上对于字符设备而言,主设备最多只有 255 个,而同一个主设备的次设备最多支持 256 个。
        详见map.c,以上结论还没有实际验证过。
char_dev.c//维护一个设备号分配的哈希表,记录已注册的设备号范围。#defineCHRDEV_MAJOR_HASH_SIZE255structchar_device_struct{structchar_device_struct*next;// 哈希冲突时的链表指针unsignedintmajor;// 主设备号unsignedintbaseminor;// 起始次设备号intminorct;// 次设备号数量charname[64];// 设备名称structcdev*cdev;// 指向对应的cdev结构}*chrdevs[CHRDEV_MAJOR_HASH_SIZE];// 哈希表数组

设备号的相关代码

//由下可知设备号dev_t是无符号32位typedef__kernel_dev_tdev_t;typedef__u32 __kernel_dev_t;typedefunsignedint__u32;//设备号的相关操作#defineMINORBITS20#defineMINORMASK((1U<<MINORBITS)-1)#defineMAJOR(dev)((unsignedint)((dev)>>MINORBITS))#defineMINOR(dev)((unsignedint)((dev)&MINORMASK))#defineMKDEV(ma,mi)(((ma)<<MINORBITS)|(mi))宏 MINORBITS 表示次设备号位数,一共是20位。 宏 MINORMASK 表示次设备号掩码。 宏 MAJOR 用于从dev_t中获取主设备号,将dev_t右移20位即可。 宏 MINOR 用于从dev_t中获取次设备号,取dev_t的低20位的值即可。 宏 MKDEV 用于将给定的主设备号和次设备号的值组合成dev_t类型的设备号。

如何查看设备号

如何查看主次设备号:[[universe/Embedbed/Linux#Linxu目录|Linux目录]]
- cat /proc/devices:列出了系统中已注册的所有字符设备和块设备的主设备号,以及相应的设备名称。不会有次设备号。
-ls -lh /dev:列出设备节点属性,原本文件大下位置,变成主次设备号。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询