如何销毁 linux 内核中的一棵基数树

How to destroy one radix tree in linux kernel

我正在尝试使用基数树为驱动程序维护一个内部数据。那么摧毁整棵树的正确方法是什么?

一个想法是用下面提到的方法遍历树:1

对于每个节点,释放项目并从树中删除其键。

另一个问题是,radix_tree_for_each_slot() 在循环内删除项目是否安全?删除会不会触发内部收缩导致迭代失败?

查看 cgwb_bdi_unregister

它似乎做了很多你需要的事情——它用 radix_tree_for_each_slot() 遍历基数树,同时它也 radix_tree_delete (来自 cgwb_kill)。

所以我想如果你保持适当的同步就不会爆炸。