- To: Tejun Heo <tj@xxxxxxxxxx>
- Subject: Re: [RFC v2 1/7] hashtable: introduce a small and naive hashtable
- From: Sasha Levin <levinsasha928@xxxxxxxxx>
- Date: Fri, 03 Aug 2012 23:36:49 +0200
- Cc: torvalds@xxxxxxxxxxxxxxxxxxxx, akpm@xxxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, linux-mm@xxxxxxxxx, paul.gortmaker@xxxxxxxxxxxxx, davem@xxxxxxxxxxxxx, rostedt@xxxxxxxxxxx, mingo@xxxxxxx, ebiederm@xxxxxxxxxxxx, aarcange@xxxxxxxxxx, ericvh@xxxxxxxxx, netdev@xxxxxxxxxxxxxxx
- Delivered-to: linux-mm-outgoing@xxxxxxxxx
- Delivered-to: int-list-linux-mm@xxxxxxxxx
- Delivered-to: linux-mm@xxxxxxxxx
- In-reply-to: <20120803213017.GK15477@google.com>
- User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120730 Thunderbird/14.0
On 08/03/2012 11:30 PM, Tejun Heo wrote:
>> I think hash_for_for_each_possible() is useful if the comparison
>> > condition is more complex than a simple comparison of one of the
>> > object members with the key - there's no need to force it on all the
>> > users.
> I don't know. What's the difference? In terms of LOC, it might even
> not save any thanks to the extra function definition, right? I don't
> think it's saving enough complexity to justify a separate rather
> unusual interface.
The function definition itself is just a macro, for example:
#define MM_SLOTS_HASH_CMP(mm_slot, obj) ((mm_slot)->mm == (obj))
As an alternative, what do you think about simplifying that to be just a 'cond' instead of a function? Something like:
hash_get(&mm_slots_hash, mm, struct mm_slot, hash, mm);
In that case, the last param ("mm") will get unrolled to a condition like this:
if ((obj)->mm == key)
Which will be simple and easy for the user.
The only reason I want to keep this interface is that most cases I've stumbled so far were easy short comparisons of a struct member with the key, and I don't want to make them more complex than they need to be. I probably will switch hash_get() to use hash_for_each_possible() as well, which will cut down on how hash_get() is a separate case.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>
[Site Home]
[Linux ARM Kernel]
[Linux ARM]
[Linux Omap]
[Fedora ARM]
[IETF Annouce]
[Security]
[Bugtraq]
[Linux]
[Linux OMAP]
[Linux MIPS]
[ECOS]
[Tools]
[DDR & Rambus]
[Asterisk Internet PBX]
[Linux API]
[Monitors]