Linux内核是否具有用于内核代码的通用哈希表实现?我知道可以使用链表,红黑树和基数树,但是没有找到对通用哈希表实现的引用,尽管我知道哈希表在核心内核中大量使用。
答案 0 :(得分:21)
冒着看起来像名声妓女的风险,让我总结一下迄今为止我所获得的答案。
Sasha Levin在2012年的通用实施是introduced,在3.7内核中是merged。
内核(截至2.6.38)不包含通用哈希表实现,但确实包含一些内容:
hlist_*/HLIST_*
是单指针头双向链表结构和对哈希桶有用的宏。 (answer below)pid_hash
,了解根据这些原语构建的示例。 uthash是C的通用哈希表,实现为在单个头文件中定义的宏。该解决方案可能适用于许多第三方内核模块(例如,设备驱动程序)。但是,依赖uthash
可能会妨碍模块的主轴。
答案 1 :(得分:0)
没有通用的哈希表代码。
但是,请参阅如何使用HLIST_*/hlist_*
内容。