[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: [dm-devel] [PATCH v7 06/16] tracepoint: use new hashtable implementation
- From: Sasha Levin <levinsasha928 gmail com>
- To: Mathieu Desnoyers <mathieu desnoyers efficios com>
- Cc: snitzer redhat com, fweisbec gmail com, Trond Myklebust netapp com, bfields fieldses org, paul gortmaker windriver com, dm-devel redhat com, agk redhat com, aarcange redhat com, rds-devel oss oracle com, eric dumazet gmail com, venkat x venkatsubra oracle com, ccaulfie redhat com, mingo elte hu, dev openvswitch org, jesse nicira com, josh joshtriplett org, rostedt goodmis org, lw cn fujitsu com, teigland redhat com, axboe kernel dk, linux-nfs vger kernel org, edumazet google com, linux-mm kvack org, netdev vger kernel org, linux-kernel vger kernel org, ejt redhat com, ebiederm xmission com, tj kernel org, akpm linux-foundation org, torvalds linux-foundation org, davem davemloft net
- Subject: Re: [dm-devel] [PATCH v7 06/16] tracepoint: use new hashtable implementation
- Date: Mon, 29 Oct 2012 13:29:24 -0400
On Mon, Oct 29, 2012 at 7:35 AM, Mathieu Desnoyers
<mathieu desnoyers efficios com> wrote:
> * Sasha Levin (levinsasha928 gmail com) wrote:
>> Switch tracepoints to use the new hashtable implementation. This reduces the amount of
>> generic unrelated code in the tracepoints.
>>
>> Signed-off-by: Sasha Levin <levinsasha928 gmail com>
>> ---
>> kernel/tracepoint.c | 27 +++++++++++----------------
>> 1 file changed, 11 insertions(+), 16 deletions(-)
>>
>> diff --git a/kernel/tracepoint.c b/kernel/tracepoint.c
>> index d96ba22..854df92 100644
>> --- a/kernel/tracepoint.c
>> +++ b/kernel/tracepoint.c
>> @@ -26,6 +26,7 @@
>> #include <linux/slab.h>
>> #include <linux/sched.h>
>> #include <linux/static_key.h>
>> +#include <linux/hashtable.h>
>>
>> extern struct tracepoint * const __start___tracepoints_ptrs[];
>> extern struct tracepoint * const __stop___tracepoints_ptrs[];
>> @@ -49,8 +50,7 @@ static LIST_HEAD(tracepoint_module_list);
>> * Protected by tracepoints_mutex.
>> */
>> #define TRACEPOINT_HASH_BITS 6
>> -#define TRACEPOINT_TABLE_SIZE (1 << TRACEPOINT_HASH_BITS)
>> -static struct hlist_head tracepoint_table[TRACEPOINT_TABLE_SIZE];
>> +static DEFINE_HASHTABLE(tracepoint_table, TRACEPOINT_HASH_BITS);
>>
> [...]
>>
>> @@ -722,6 +715,8 @@ struct notifier_block tracepoint_module_nb = {
>>
>> static int init_tracepoints(void)
>> {
>> + hash_init(tracepoint_table);
>> +
>> return register_module_notifier(&tracepoint_module_nb);
>> }
>> __initcall(init_tracepoints);
>
> So we have a hash table defined in .bss (therefore entirely initialized
> to NULL), and you add a call to "hash_init", which iterates on the whole
> array and initialize it to NULL (again) ?
>
> This extra initialization is redundant. I think it should be removed
> from here, and hashtable.h should document that hash_init() don't need
> to be called on zeroed memory (which includes static/global variables,
> kzalloc'd memory, etc).
This was discussed in the previous series, the conclusion was to call
hash_init() either way to keep the encapsulation and consistency.
It's cheap enough and happens only once, so why not?
Thanks,
Sasha
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]