Add Lai Jiangshan's copyright to rculfhash
[urcu.git] / urcu / rculfhash.h
index c13d3dff91bb7d6dd77ddb81d389420347e8988a..d3018b7e438b6446ebac56bfa4bdc41ef695704d 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
@@ -71,7 +72,7 @@ struct cds_lfht;
  * Ensure reader and writer threads are registered as urcu readers.
  */
 
-typedef int (*cds_lfht_match_fct)(struct cds_lfht_node *node, void *key);
+typedef int (*cds_lfht_match_fct)(struct cds_lfht_node *node, const void *key);
 
 /*
  * cds_lfht_node_init - initialize a hash table node
@@ -117,6 +118,8 @@ struct cds_lfht *_cds_lfht_new(unsigned long init_size,
  * @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,7 +132,8 @@ 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,
@@ -186,7 +190,7 @@ void cds_lfht_count_nodes(struct cds_lfht *ht,
  * Threads calling this API need to be registered RCU read-side threads.
  */
 void cds_lfht_lookup(struct cds_lfht *ht, unsigned long hash,
-               cds_lfht_match_fct match, void *key,
+               cds_lfht_match_fct match, const void *key,
                struct cds_lfht_iter *iter);
 
 /*
@@ -206,7 +210,7 @@ void cds_lfht_lookup(struct cds_lfht *ht, unsigned long hash,
  * Threads calling this API need to be registered RCU read-side threads.
  */
 void cds_lfht_next_duplicate(struct cds_lfht *ht,
-               cds_lfht_match_fct match, void *key,
+               cds_lfht_match_fct match, const void *key,
                struct cds_lfht_iter *iter);
 
 /*
@@ -268,7 +272,7 @@ void cds_lfht_add(struct cds_lfht *ht, unsigned long hash,
 struct cds_lfht_node *cds_lfht_add_unique(struct cds_lfht *ht,
                unsigned long hash,
                cds_lfht_match_fct match,
-               void *key,
+               const void *key,
                struct cds_lfht_node *node);
 
 /*
@@ -300,7 +304,7 @@ struct cds_lfht_node *cds_lfht_add_unique(struct cds_lfht *ht,
 struct cds_lfht_node *cds_lfht_add_replace(struct cds_lfht *ht,
                unsigned long hash,
                cds_lfht_match_fct match,
-               void *key,
+               const void *key,
                struct cds_lfht_node *node);
 
 /*
This page took 0.024491 seconds and 4 git commands to generate.