我试图用哈希表在linux内核中实现键值存储。 任何人都可以使用地图指出一个合适的例子吗?
我将从用户空间获取密钥,我想读/写/更新内核空间中的值。
是否存在任何保护机制,就像我们在散列中一样使用hash_add_rcu?
答案 0 :(得分:0)
基本答案是哈希表是地图。之所以没有抽象地图"地图"内核中的类型API是因为你负责内核中的所有内容。不仅如此,在内核中实现散列图的方式允许单个记录(值)成为多个映射的一部分,并交织多个间接并创建任意关系记录。
安全是另一个问题。在大多数情况下,当您从用户空间获取任何数据时,您应该将其视为垃圾:特别是,您不能信任用户空间为您提供有效密钥,并直接使用它们,比如地图查找。在读取/写入/更新值之前,您应该有一个不透明的机制来检查密钥的有效性(例如大小)。