I.MX6ULL内核开发4:设备号的组成与哈希表
创始人
2024-05-25 09:04:00

目录

一、设备号

二、hash table


一、设备号

文件夹:/home/geralt/linux_driver/kernel/ebf_linux_kernel_6ull_depth1/include/linux/kdev.h

这里面是linux中关于设备号的具体描述

#define MINORBITS	20
#define MINORMASK	((1U << MINORBITS) - 1)#define MAJOR(dev)	((unsigned int) ((dev) >> MINORBITS))
#define MINOR(dev)	((unsigned int) ((dev) & MINORMASK))
#define MKDEV(ma,mi)	(((ma) << MINORBITS) | (mi))

小技巧:在vscode中可使用ctrl+p快捷键快速找到需要的文件。

理论取值范围:

主设备号:2^12=1024*4=4k

次设备号:2^20=1024*1024=1M

  • 已注册的设备号可以使用  cat   /proc/devices  查看

可以看到,这是已经注册过的设备,其中包括设备号和名字。 

  • 内核是希望一个设备驱动(file_operation)可以独自占有一个主设备号和多个次设备号,而通常一个设备文件绑定一个主设备号和一个次设备号,所以设备驱动和设备文件是一对一和一对多的关系。

二、hash table

哈希表、散列表

  • 数组的优缺点:查找快,增删元素效率低,容量固定
  • 链表的优缺点:查找慢,增删元素效率高,容量不限
  • 哈希表:数组+链表
    • 以主设备号为编号,使用哈希表f(major)=major%255来计算数组下标
    • 主设备号冲突(如0,255),则以次设备号为比较值来排序链表节点

哈希函数的设计目标:链表节点尽量平均分布在各个数组元素中,以提高查询效率 

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...