* Lai Jiangshan ([email protected]) wrote:
> Signed-off-by: Lai Jiangshan <[email protected]>

merged, thanks!

Mathieu

> ---
>  rculfhash-internal.h |   22 ++++++++++++++++++++++
>  rculfhash-mm-chunk.c |   16 ++++------------
>  rculfhash-mm-mmap.c  |   19 +++++--------------
>  rculfhash-mm-order.c |   16 +++-------------
>  4 files changed, 34 insertions(+), 39 deletions(-)
> 
> diff --git a/rculfhash-internal.h b/rculfhash-internal.h
> index 38a0317..a8a1ce4 100644
> --- a/rculfhash-internal.h
> +++ b/rculfhash-internal.h
> @@ -152,4 +152,26 @@ extern int get_count_order_ulong(unsigned long x);
>  #define poison_free(ptr)     free(ptr)
>  #endif
>  
> +static inline
> +struct cds_lfht *__default_alloc_cds_lfht(
> +             const struct cds_lfht_mm_type *mm,
> +             unsigned long cds_lfht_size,
> +             unsigned long min_nr_alloc_buckets,
> +             unsigned long max_nr_buckets)
> +{
> +     struct cds_lfht *ht;
> +
> +     ht = calloc(1, cds_lfht_size);
> +     assert(ht);
> +
> +     ht->mm = mm;
> +     ht->bucket_at = mm->bucket_at;
> +     ht->min_nr_alloc_buckets = min_nr_alloc_buckets;
> +     ht->min_alloc_buckets_order =
> +             get_count_order_ulong(min_nr_alloc_buckets);
> +     ht->max_nr_buckets = max_nr_buckets;
> +
> +     return ht;
> +}
> +
>  #endif /* _URCU_RCULFHASH_INTERNAL_H */
> diff --git a/rculfhash-mm-chunk.c b/rculfhash-mm-chunk.c
> index 38dde3a..a7a9b76 100644
> --- a/rculfhash-mm-chunk.c
> +++ b/rculfhash-mm-chunk.c
> @@ -75,26 +75,18 @@ static
>  struct cds_lfht *alloc_cds_lfht(unsigned long min_nr_alloc_buckets,
>               unsigned long max_nr_buckets)
>  {
> -     struct cds_lfht *ht;
>       unsigned long nr_chunks, cds_lfht_size;
>  
>       min_nr_alloc_buckets = max(min_nr_alloc_buckets,
>                               max_nr_buckets / MAX_CHUNK_TABLE);
>       nr_chunks = max_nr_buckets / min_nr_alloc_buckets;
>       cds_lfht_size = offsetof(struct cds_lfht, tbl_chunk) +
> -                     sizeof(ht->tbl_chunk[0]) * nr_chunks;
> +                     sizeof(struct cds_lfht_node *) * nr_chunks;
>       cds_lfht_size = max(cds_lfht_size, sizeof(struct cds_lfht));
> -     ht = calloc(1, cds_lfht_size);
> -     assert(ht);
>  
> -     ht->bucket_at = bucket_at;
> -     ht->mm = &cds_lfht_mm_chunk;
> -     ht->min_nr_alloc_buckets = min_nr_alloc_buckets;
> -     ht->min_alloc_buckets_order =
> -             get_count_order_ulong(min_nr_alloc_buckets);
> -     ht->max_nr_buckets = max_nr_buckets;
> -
> -     return ht;
> +     return __default_alloc_cds_lfht(
> +                     &cds_lfht_mm_chunk, cds_lfht_size,
> +                     min_nr_alloc_buckets, max_nr_buckets);
>  }
>  
>  const struct cds_lfht_mm_type cds_lfht_mm_chunk = {
> diff --git a/rculfhash-mm-mmap.c b/rculfhash-mm-mmap.c
> index dba4524..4554ed6 100644
> --- a/rculfhash-mm-mmap.c
> +++ b/rculfhash-mm-mmap.c
> @@ -131,9 +131,9 @@ static
>  struct cds_lfht *alloc_cds_lfht(unsigned long min_nr_alloc_buckets,
>               unsigned long max_nr_buckets)
>  {
> -     struct cds_lfht *ht;
> -     unsigned long page_bucket_size = getpagesize() / sizeof(*ht->tbl_mmap);
> +     unsigned long page_bucket_size;
>  
> +     page_bucket_size = getpagesize() / sizeof(struct cds_lfht_node);
>       if (max_nr_buckets <= page_bucket_size) {
>               /* small table */
>               min_nr_alloc_buckets = max_nr_buckets;
> @@ -143,18 +143,9 @@ struct cds_lfht *alloc_cds_lfht(unsigned long 
> min_nr_alloc_buckets,
>                                       page_bucket_size);
>       }
>  
> -     ht = calloc(1, sizeof(struct cds_lfht));
> -     assert(ht);
> -
> -     ht->bucket_at = bucket_at;
> -     ht->mm = &cds_lfht_mm_mmap;
> -     ht->min_nr_alloc_buckets = min_nr_alloc_buckets;
> -     ht->min_alloc_buckets_order =
> -                     get_count_order_ulong(min_nr_alloc_buckets);
> -     ht->max_nr_buckets = max_nr_buckets;
> -
> -
> -     return ht;
> +     return __default_alloc_cds_lfht(
> +                     &cds_lfht_mm_mmap, sizeof(struct cds_lfht),
> +                     min_nr_alloc_buckets, max_nr_buckets);
>  }
>  
>  const struct cds_lfht_mm_type cds_lfht_mm_mmap = {
> diff --git a/rculfhash-mm-order.c b/rculfhash-mm-order.c
> index 9c0c70e..237d4cf 100644
> --- a/rculfhash-mm-order.c
> +++ b/rculfhash-mm-order.c
> @@ -77,19 +77,9 @@ static
>  struct cds_lfht *alloc_cds_lfht(unsigned long min_nr_alloc_buckets,
>               unsigned long max_nr_buckets)
>  {
> -     struct cds_lfht *ht;
> -
> -     ht = calloc(1, sizeof(struct cds_lfht));
> -     assert(ht);
> -
> -     ht->bucket_at = bucket_at;
> -     ht->mm = &cds_lfht_mm_order;
> -     ht->min_nr_alloc_buckets = min_nr_alloc_buckets;
> -     ht->min_alloc_buckets_order =
> -             get_count_order_ulong(min_nr_alloc_buckets);
> -     ht->max_nr_buckets = max_nr_buckets;
> -
> -     return ht;
> +     return __default_alloc_cds_lfht(
> +                     &cds_lfht_mm_order, sizeof(struct cds_lfht),
> +                     min_nr_alloc_buckets, max_nr_buckets);
>  }
>  
>  const struct cds_lfht_mm_type cds_lfht_mm_order = {
> -- 
> 1.7.4.4
> 

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com

_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to