如何在linux内核中使用map作为键值存储?

时间:2018-04-29 10:31:06

标签: linux linux-kernel

我试图用哈希表在linux内核中实现键值存储。 任何人都可以使用地图指出一个合适的例子吗?

我将从用户空间获取密钥,我想读/写/更新内核空间中的值。
是否存在任何保护机制,就像我们在散列中一样使用hash_add_rcu?

1 个答案:

答案 0 :(得分:0)

基本答案是哈希表是地图。之所以没有抽象地图"地图"内核中的类型API是因为你负责内核中的所有内容。不仅如此,在内核中实现散列图的方式允许单个记录(值)成为多个映射的一部分,并交织多个间接并创建任意关系记录。

安全是另一个问题。在大多数情况下,当您从用户空间获取任何数据时,您应该将其视为垃圾:特别是,您不能信任用户空间为您提供有效密钥,并直接使用它们,比如地图查找。在读取/写入/更新值之前,您应该有一个不透明的机制来检查密钥的有效性(例如大小)。