在qstr结构中找不到散列的引用

时间:2013-06-08 05:19:09

标签: c linux-kernel filesystems vfs

正如您在http://lxr.linux.no/#linux+v3.9.5/fs/namei.c#L1751

中所看到的
    for(;;) {
            struct qstr this;
            long len;
            int type;

            err = may_lookup(nd);
            if (err)
                    break;

            len = hash_name(name, &this.hash);

在最后一行,我从未发现struct qstr有一个成员名称哈希,我发现的只有:

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

1 个答案:

答案 0 :(得分:0)

Here您可以发现HASH_LEN_DECLARE定义为:

/* 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是最后一个成员。