add max_nr_buckets argument
[urcu.git] / urcu / rculfhash.h
index 9208011d900b3770184df8ed2d7d5f2106201a13..6953ad12499b515819b73e56808106fdf55926e1 100644 (file)
@@ -7,6 +7,7 @@
  * Userspace RCU library - Lock-Free RCU Hash Table
  *
  * Copyright 2011 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+ * Copyright 2011 - Lai Jiangshan <laijs@cn.fujitsu.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -97,7 +98,8 @@ enum {
  * _cds_lfht_new - API used by cds_lfht_new wrapper. Do not use directly.
  */
 struct cds_lfht *_cds_lfht_new(unsigned long init_size,
-                       unsigned long min_alloc_size,
+                       unsigned long min_nr_alloc_buckets,
+                       unsigned long max_nr_buckets,
                        int flags,
                        void (*cds_lfht_call_rcu)(struct rcu_head *head,
                                void (*func)(struct rcu_head *head)),
@@ -112,11 +114,16 @@ struct cds_lfht *_cds_lfht_new(unsigned long init_size,
 
 /*
  * cds_lfht_new - allocate a hash table.
- * @init_size: number of nodes to allocate initially. Must be power of two.
- * @min_alloc_size: the smallest allocation size to use. Must be power of two.
+ * @init_size: number of buckets to allocate initially. Must be power of two.
+ * @min_nr_alloc_buckets: the minimum number of allocated buckets.
+ *                        (must be power of two)
+ * @max_nr_buckets: the maximum number of hash table buckets allowed.
+ *                  (must be power of two)
  * @flags: hash table creation flags (can be combined with bitwise or: '|').
  *           0: no flags.
  *           CDS_LFHT_AUTO_RESIZE: automatically resize hash table.
+ *           CDS_LFHT_ACCOUNTING: count the number of node addition
+ *                                and removal in the table
  * @attr: optional resize worker thread attributes. NULL for default.
  *
  * Return NULL on error.
@@ -129,15 +136,17 @@ struct cds_lfht *_cds_lfht_new(unsigned long init_size,
  * this priority level. Having lower priority for call_rcu and resize threads
  * does not pose any correctness issue, but the resize operations could be
  * starved by updates, thus leading to long hash table bucket chains.
- * Threads calling this API need to be registered RCU read-side threads.
+ * Threads calling this API are NOT required to be registered RCU read-side
+ * threads. It can be called very early.(before rcu is initialized ...etc.)
  */
 static inline
 struct cds_lfht *cds_lfht_new(unsigned long init_size,
-                       unsigned long min_alloc_size,
+                       unsigned long min_nr_alloc_buckets,
+                       unsigned long max_nr_buckets,
                        int flags,
                        pthread_attr_t *attr)
 {
-       return _cds_lfht_new(init_size, min_alloc_size, flags,
+       return _cds_lfht_new(init_size, min_nr_alloc_buckets, max_nr_buckets, flags,
                        call_rcu, synchronize_rcu, rcu_read_lock,
                        rcu_read_unlock, rcu_thread_offline,
                        rcu_thread_online, rcu_register_thread,
This page took 0.023608 seconds and 4 git commands to generate.