Re: [PATCH v3 01/17] hashtable: introduce a small and naive hashtable
From: Ryan Mallon <hidden>
Date: 2012-08-22 23:54:33
Also in:
dm-devel, linux-mm, linux-nfs, lkml
From: Ryan Mallon <hidden>
Date: 2012-08-22 23:54:33
Also in:
dm-devel, linux-mm, linux-nfs, lkml
On 23/08/12 04:01, Tejun Heo wrote:
Hello, Sasha. On Wed, Aug 22, 2012 at 04:26:56AM +0200, Sasha Levin wrote:quoted
+#define DEFINE_HASHTABLE(name, bits) \ + struct hlist_head name[HASH_SIZE(bits)];Shouldn't this be something like the following? #define DEFINE_HASHTABLE(name, bits) \ struct hlist_head name[HASH_SIZE(bits)] = \ { [0 ... HASH_SIZE(bits) - 1] = HLIST_HEAD_INIT }; Also, given that the declaration isn't non-trivial, you'll probably want a matching DECLARE_HASHTABLE() macro too.quoted
+/* Use hash_32 when possible to allow for fast 32bit hashing in 64bit kernels. */ +#define hash_min(val, bits) ((sizeof(val)==4) ? hash_32((val), (bits)) : hash_long((val), (bits)))Why is the branching condition sizeof(val) == 4 instead of <= 4? Also, no biggie but why isn't this macro in caps?
It should probably use gcc's statement expression extensions to prevent
side-effect issues with the arguments:
#define hash_min ({ \
sizeof(val) <= 4 ? \
hash_32(val, bits) : \
hash_long(val, bits)); \
})
~Ryan
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>