文章目录
- 1.总结
- 2.各类函数
- 2.1 分配一个仓库
- 2.2 销毁仓库
- 2.3 从仓库里面分配一个整数id
- 2.4 将上面分配的整数id从仓库里面删除
- 2.5 在指定范围内分配一个id
1.总结
ida使用起来很简单,就是先分配一个仓库一样的实例,再从这个仓库里面分配一个独一无二的整数id
2.各类函数
2.1 分配一个仓库
静态定义一个类似于仓库一样的
51 static DEFINE_IDA(host_index_ida);
2.2 销毁仓库
606 void scsi_exit_hosts(void)
607 {
608 class_unregister(&shost_class);
609 ida_destroy(&host_index_ida);
610 }
2.3 从仓库里面分配一个整数id
394 int index;
...
414 index = ida_simple_get(&host_index_ida, 0, 0, GFP_KERNEL);
415 if (index < 0) {
416 kfree(shost);
417 return NULL;
418 }
419 shost->host_no = index;
...
2.4 将上面分配的整数id从仓库里面删除
365 ida_simple_remove(&host_index_ida, shost->host_no);
其实就是调用ida_free
301 #define ida_simple_remove(ida, id) ida_free(ida, id)
2.5 在指定范围内分配一个id
534 int ida_alloc_range(struct ida *ida, unsigned int min, unsigned int max, gfp_t gfp)