Linux内核中的两种ID分配方式

参考

正文

在写内核代码时,可能会需要给数据结构分配一个唯一的ID的需求,具体是下面两种需求:

  1. 给结构体A分配一个全局唯一的ID,但是不需要根据ID找到结构体A的地址的用法

  2. 不但需要给结构体A分配一个全局唯一的ID,而且还需要能够根据ID值快速找到结构体A的地址

第1个需求通过IDA可以解决,第2个需求通过IDR来解决,比较新的内核里IDR已经不推荐使用了,而是推荐XArray。

下面用内核中已有的用法来举例。

IDR

  • 定义
    image

  • 分配
    image

  • 查找
    image

  • 遍历
    image

  • 删除
    image

  • 全部销毁
    image

具体每个API的详细用法参考上面的内核文档。

IDA

  • 定义
    image

  • 分配
    image

  • 释放
    image

  • 全部销毁
    image

XArray

  • 初始化
    image

  • 插入
    image

  • 查找
    image

  • 删除
    image

  • 遍历
    image

    image

  • 销毁
    image

完。

posted @ 2023-10-27 23:28  dolinux  阅读(383)  评论(0)    收藏  举报