On Tue, Apr 19, 2011 at 3:01 PM, Christopher Li <sparse@xxxxxxxxxxx> wrote: > On Tue, Apr 19, 2011 at 11:17 AM, Linus Torvalds > <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: >> + while ((c = *name++) != 0) >> + hash = (hash + (c << 4) + (c >> 4)) * 11; >> + >> + hash *= HASH_PRIME; >> + hash >>= 32 - HASHED_INPUT_BITS; > > Just curious about this hash function, obviously it is not the same as the one > used for hashing idents. Does it have any history or you just code it up? It resembles the kernel pathname hash function, but without the fancy "do it in 64 bits on 64-bit architectures". And the exact shifting etc at the end is different (the kernel sizes the hash table based on memory size etc). But it might be a good idea to share the hash function with the idents - there is absolutely nothing magical about the hashing I picked. The kernel path component hash function has been "sufficiently good", but it's nothing magical or special. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html