On Tue, 2012-08-07 at 02:45 +0200, Sasha Levin wrote: > This hashtable implementation is using hlist buckets to provide a simple > hashtable to prevent it from getting reimplemented all over the kernel.
> diff --git a/include/linux/hashtable.h b/include/linux/hashtable.h Just trivial style notes and a typo > +/* 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))) This is a pretty long line. It doesn't use normal kernel spacing style and it has unnecessary parentheses. Maybe: #define hash_min(val, bits) \ (sizeof(val) == 4 ? hash_32(val, bits) : hash_long(val, bits)) > + > +/** > + * hash_init - initialize a hash table > + * @hashtable: hashtable to be initialized > + * @bits: bit count of hashing function > + * > + * Initializes a hash table with 2**bits buckets. > + */ > +static inline void hash_init(struct hlist_head *hashtable, int bits) > +{ > + int i; > + > + for (i = 0; i < HASH_SIZE(bits); i++) > + INIT_HLIST_HEAD(hashtable + i); > +} Maybe use a struct hlist_head *last_hash_entry as a loop variable { struct hlist_head *eo_hash = hashtable + HASH_SIZE(bits); while (hashtable < eo_hash) INIT_HLIST_HEAD(hashtable++); } The compiler might generate the same code anyway... [] > +/** > + * hash_for_each_possible - iterate over all possible objects for a giver key > + * @name: hashtable to iterate > + * @obj: the type * to use as a loop cursor for each bucke bucket -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/