rcuja: cleanup destroy print output
[userspace-rcu.git] / rcuja / rcuja-internal.h
index eaef469b031f45387878ca63f9fbcac3db4f721c..cf4ef96fcc71a0f0f86ba6b69a6ac24a100d9131 100644 (file)
@@ -94,6 +94,10 @@ struct cds_ja {
         */
        struct cds_lfht *ht;
        unsigned long nr_fallback;      /* Number of fallback nodes used */
+
+       /* For debugging */
+       unsigned long node_fallback_count_distribution[JA_ENTRY_PER_NODE];
+       unsigned long nr_nodes_allocated, nr_nodes_freed;
 };
 
 static inline
@@ -113,6 +117,16 @@ struct cds_ja_inode_flag *ja_node_flag_pool_1d(struct cds_ja_inode *node,
        return (struct cds_ja_inode_flag *) (((unsigned long) node) | (bitsel << JA_TYPE_BITS) | type);
 }
 
+static inline
+struct cds_ja_inode_flag *ja_node_flag_pool_2d(struct cds_ja_inode *node,
+               unsigned long type, unsigned int bitsel[2])
+{
+       assert(type < (1UL << JA_TYPE_BITS));
+       assert(bitsel[0] < JA_BITS_PER_BYTE);
+       assert(bitsel[1] < JA_BITS_PER_BYTE);
+       return (struct cds_ja_inode_flag *) (((unsigned long) node) | (bitsel[0] << (JA_TYPE_BITS + JA_LOG2_BITS_PER_BYTE)) | (bitsel[1] << JA_TYPE_BITS) | type);
+}
+
 static inline
 unsigned long ja_node_pool_1d_bitsel(struct cds_ja_inode_flag *node)
 {
@@ -148,7 +162,7 @@ __attribute__((visibility("protected")))
 struct cds_ja_shadow_node *rcuja_shadow_set(struct cds_lfht *ht,
                struct cds_ja_inode_flag *new_node_flag,
                struct cds_ja_shadow_node *inherit_from,
-               struct cds_ja *ja);
+               struct cds_ja *ja, int level);
 
 /* rcuja_shadow_clear flags */
 enum {
@@ -173,6 +187,9 @@ struct cds_lfht *rcuja_create_ht(const struct rcu_flavor_struct *flavor);
 __attribute__((visibility("protected")))
 int rcuja_delete_ht(struct cds_lfht *ht);
 
+__attribute__((visibility("protected")))
+void free_cds_ja_node(struct cds_ja *ja, struct cds_ja_inode *node);
+
 //#define DEBUG
 
 #ifdef __linux__
This page took 0.023731 seconds and 4 git commands to generate.