Linux内核中的哈希表

时间:2011-03-30 16:13:07

标签: data-structures linux-kernel

Linux内核是否具有用于内核代码的通用哈希表实现?我知道可以使用链表,红黑树和基数树,但是没有找到对通用哈希表实现的引用,尽管我知道哈希表在核心内核中大量使用。

2 个答案:

答案 0 :(得分:21)

冒着看起来像名声妓女的风险,让我总结一下迄今为止我所获得的答案。


内核3.7 +

Sasha Levin在2012年的通用实施是introduced,在3.7内核中是merged


较旧的内核

内核(截至2.6.38)不包含通用哈希表实现,但确实包含一些内容:

    list.h中的
  • hlist_*/HLIST_*是单指针头双向链表结构和对哈希桶有用的宏。 (answer below
  • {adobriyan
  • hash.h包括int,long和指针的散列例程。 Chuck Lever This article研究了这些例程的表现。
  • 请参阅pid.c中的pid_hash,了解根据这些原语构建的示例。

uthash是C的通用哈希表,实现为在单个头文件中定义的宏。该解决方案可能适用于许多第三方内核模块(例如,设备驱动程序)。但是,依赖uthash可能会妨碍模块的主轴。

答案 1 :(得分:0)

没有通用的哈希表代码。

但是,请参阅如何使用HLIST_*/hlist_*内容。