我正在尝试使用基数树为驱动程序维护一个内部数据。那么,摧毁整棵树的正确方法是什么呢?
一个想法是用上面提到的方法遍历树:1
对于每个节点,释放项目并从树中删除其键。
另一个问题是,循环中有删除项的radix_tree_for_each_slot()
安全吗?删除会触发内部收缩并导致迭代失败吗?
查看cgwb_bdi_unregister。
它似乎在做你需要做的事情——它用radix_tree_for_each_slot()
在基数树上迭代,同时也用radix_tree_delete
(来自cgwb_kill)。
所以我想,如果你能保持正常的同步,就不会有什么事情发生。