根据 hash.h,hash_ptr() 看起来像这样:
static inline unsigned long hash_ptr(const void *ptr, unsigned int bits)
我只是对参数的作用有点困惑。显然,void *ptr
指向要散列的数据。我的问题是该函数如何知道数据在哪里结束?如果假设使用 cstrings(即寻找 NULL 字节),那么为什么要使其成为 void 指针?
这就是下一个参数的用武之地:int bits
参数是否告诉您数据持续了多长时间?我认为int bits
参数指定返回值,例如,如果我的哈希数组只有63个槽,那么我可以指定5作为位数。我只是有点困惑这个函数是如何工作的,并且没有任何手册页或任何东西......
编辑: 好的,既然 hash_ptr 只对指针地址进行哈希处理,那么如何在内核编程空间中对字节数组或 C 字符串进行哈希处理呢?
最佳答案
它不会对指针处的值进行哈希处理;它以与平台(大小)无关的方式对指针本身进行哈希处理。
我的看起来像这样:
static inline unsigned long hash_ptr(const void *ptr, unsigned int bits)
{
return hash_long((unsigned long)ptr, bits);
}
关于c - 如何使用 <linux/hash.h> 中的 hash_ptr() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22155954/