hi all

the codes about filesystem in the kernel is:

static inline struct list_head * d_hash(struct dentry *parent,
unsigned long hash){
      hash += (unsigned long)parent / L1_CACHE_BYTES;
      hash = hash^(hash>>D_HASHBITS)^(hash>>D_HASHBITS*2);
      return dentry_hashtable + (hash & D_HASHMASK);}

I know the function parameter of hash belongs to the qstr string is looking
up, and the local variableshash should add the *address of the dentry of
parent*.

Why count the hash value use "L1_CACHE_BYTES" , "D_HASHBITS" and
"D_HASHMASK"?

And How to understand the codes following ?

hash += (unsigned long)parent / L1_CACHE_BYTES;
hash = hash^(hash>>D_HASHBITS)^(hash>>D_HASHBITS*2);
_______________________________________________
Kernelnewbies mailing list
[email protected]
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to