rcuja: create shadow node for root
[userspace-rcu.git] / rcuja / rcuja-internal.h
index 551cad68cbe0ccf6711a9f535373a10cac8ece6f..027780833845917502cbcd4e217e269d9d4a21dc 100644 (file)
 #include <urcu/rculfhash.h>
 
 /* Never declared. Opaque type used to store flagged node pointers. */
-struct cds_ja_node_flag;
+struct cds_ja_inode_flag;
 
 /*
  * Shadow node contains mutex and call_rcu head associated with a node.
  */
 struct cds_ja_shadow_node {
        struct cds_lfht_node ht_node;   /* hash table node */
-       struct cds_ja_node *node;       /* reverse mapping and hash table key */
+       struct cds_ja_inode *node;      /* reverse mapping and hash table key */
        /*
         * mutual exclusion on all nodes belonging to the same tree
         * position (e.g. both nodes before and after recompaction
@@ -43,10 +43,13 @@ struct cds_ja_shadow_node {
        pthread_mutex_t *lock;
        unsigned int nr_child;          /* number of children in node */
        struct rcu_head head;           /* for deferred node and shadow node reclaim */
+       int is_root;                    /* is it a root node ? */
 };
 
 struct cds_ja {
-       struct cds_ja_node_flag *root;
+       struct cds_ja_inode_flag *root;
+       unsigned int tree_depth;
+       uint64_t key_max;
        /*
         * We use a hash table to associate node keys to their
         * respective shadow node. This helps reducing lookup hot path
@@ -57,14 +60,14 @@ struct cds_ja {
 
 __attribute__((visibility("protected")))
 struct cds_ja_shadow_node *rcuja_shadow_lookup_lock(struct cds_lfht *ht,
-               struct cds_ja_node *node);
+               struct cds_ja_inode *node);
 
 __attribute__((visibility("protected")))
 void rcuja_shadow_unlock(struct cds_ja_shadow_node *shadow_node);
 
 __attribute__((visibility("protected")))
 int rcuja_shadow_set(struct cds_lfht *ht,
-               struct cds_ja_node *new_node,
+               struct cds_ja_inode *new_node,
                struct cds_ja_shadow_node *inherit_from);
 
 /* rcuja_shadow_clear flags */
@@ -75,7 +78,7 @@ enum {
 
 __attribute__((visibility("protected")))
 int rcuja_shadow_clear(struct cds_lfht *ht,
-               struct cds_ja_node *node,
+               struct cds_ja_inode *node,
                unsigned int flags);
 
 __attribute__((visibility("protected")))
This page took 0.024029 seconds and 4 git commands to generate.