Re: [PATCH v3 01/17] hashtable: introduce a small and naive hashtable
From: Pedro Alves <hidden>
Date: 2012-09-06 14:20:40
Also in:
dm-devel, linux-mm, linux-nfs, lkml
From: Pedro Alves <hidden>
Date: 2012-09-06 14:20:40
Also in:
dm-devel, linux-mm, linux-nfs, lkml
On 09/06/2012 02:53 PM, Sasha Levin wrote:
So I think that for the hash iterator it might actually be simpler. My solution to making 'break' work in the iterator is: for (bkt = 0, node = NULL; bkt < HASH_SIZE(name) && node == NULL; bkt++) hlist_for_each_entry(obj, node, &name[bkt], member) We initialize our node loop cursor with NULL in the external loop, and the external loop will have a new condition to loop while that cursor is NULL. My logic is that we can only 'break' when we are iterating over an object in the internal loop. If we're iterating over an object in that loop then 'node != NULL'. This way, if we broke from within the internal loop, the external loop will see node as not NULL, and so it will stop looping itself. On the other hand, if the internal loop has actually ended, then node will be NULL, and the outer loop will keep running. Is there anything I've missed?
Looks right to me, from a cursory look at hlist_for_each_entry. That's exactly what I meant with this most often being trivial when the inner loop's iterator is a pointer that goes NULL at the end. -- Pedro Alves -- 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>