idr机制解决了什么问题?为什么需要idr机制(或者说,idr机制这种解决方案,相对已有的其他方案,有什么优势所在) ?
idr在linux内核中指的就是整数ID管理机制,从本质上来说,这就是一种将整数ID号和特定指针关联在一起的机制。
假设我们的代码内需要将一个设备的ID号和描述该设备信息的结构体联系,我们应该怎么做?
最简单的方法当然是通过数组(在当前场景下准确说,是结构体数组,每个数组元素包含一个ID和一个指针。但是结构体数组,依然是数组!)进行索引,
但如果ID号的范围很大(比如32位表示的ID号),则用数组索引显然不可能,因为这需要定义很大的数组,消耗很大的内存空间。
第二种方法是用链表,查找的时候根据ID来遍历链表。但如果实际存在的设备较多,则链表的查询效率会很低。
遇到上述清况,我们就可以采用idr机制,该机制内部采用radix树实现,可以很方便地将整数和指针关联起来,并且具有很高的搜索效率。
idr树实现机制,参考:
https://blog.csdn.net/midion9/article/details/50923095
.