Can';在qstr结构中找不到哈希的引用

Can';在qstr结构中找不到哈希的引用,c,linux-kernel,filesystems,vfs,C,Linux Kernel,Filesystems,Vfs,正如你在书中看到的 在最后一行,我从未发现struct qstr有成员名散列,我唯一发现的是: struct qstr { union { struct { HASH_LEN_DECLARE; }; u64 hash_len; }; const unsigned char *name; }; 有谁能告诉

正如你在书中看到的

在最后一行,我从未发现struct qstr有成员名散列,我唯一发现的是:

struct qstr {
        union { 
                struct {
                        HASH_LEN_DECLARE;
                };
                u64 hash_len;
        };
        const unsigned char *name;
};
有谁能告诉我发生了什么事吗?

你可以发现
散列声明
的定义如下:

/* The hash is always the low bits of hash_len */
#ifdef __LITTLE_ENDIAN
#define HASH_LEN_DECLARE u32 hash; u32 len;
#else
#define HASH_LEN_DECLARE u32 len; u32 hash;
#endif

如果little endian(机器首先存储最低有效字节)
hash
是第一个成员,否则
hash
是最后一个成员。

您检查了
hash\u LEN\u DECLARE
宏?hash\u lenu DECLARE扩展到什么?我打赌这是声明
hash
。标题和这个问题有什么关系?@JoachimPileborg非常抱歉,这篇文章是根据前一个问题的草稿编辑的,忘了更改标题。是的,忘了检查hash\u LEN\u DECLARE,它定义了hash。
/* The hash is always the low bits of hash_len */
#ifdef __LITTLE_ENDIAN
#define HASH_LEN_DECLARE u32 hash; u32 len;
#else
#define HASH_LEN_DECLARE u32 len; u32 hash;
#endif