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

发布时间 2023-10-27 23:32:33作者: 摩斯电码

参考

https://www.kernel.org/doc/html/latest/core-api/idr.html

正文

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

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

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

第1个需求通过IDA可以解决,第2个需求通过IDR来解决。

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

IDR

  • 定义
    image

  • 分配
    image

  • 查找
    image

  • 遍历
    image

  • 删除
    image

  • 全部销毁
    image

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

IDA

  • 定义
    image

  • 分配
    image

  • 释放
    image

  • 全部销毁
    image