3 #include "tree/hdr_ellenbintree_set.h"
4 #include <cds/urcu/signal_buffered.h>
5 #include <cds/container/ellen_bintree_set_rcu.h>
7 #include "tree/hdr_intrusive_ellen_bintree_pool_rcu.h"
8 #include "unit/print_ellenbintree_stat.h"
11 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
12 namespace cc = cds::container;
13 namespace co = cds::opt;
15 typedef cds::urcu::gc< cds::urcu::signal_buffered<> > rcu_type;
17 typedef cc::ellen_bintree::node<rcu_type, EllenBinTreeSetHdrTest::value_type> tree_leaf_node;
18 typedef cc::ellen_bintree::internal_node< EllenBinTreeSetHdrTest::key_type, tree_leaf_node > tree_internal_node;
19 typedef cc::ellen_bintree::update_desc<tree_leaf_node, tree_internal_node> tree_update_desc;
22 template <typename Tree>
23 void operator()( Tree const& t)
25 std::cout << t.statistics();
31 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_less()
33 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
34 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
35 cc::ellen_bintree::make_set_traits<
36 cc::ellen_bintree::key_extractor< key_extractor >
41 test_rcu<set_type, print_stat>();
45 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_cmp()
47 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
48 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
49 cc::ellen_bintree::make_set_traits<
50 cc::ellen_bintree::key_extractor< key_extractor >
51 ,co::compare< compare >
55 test_rcu<set_type, print_stat>();
59 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_cmpless()
61 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
62 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
63 cc::ellen_bintree::make_set_traits<
64 cc::ellen_bintree::key_extractor< key_extractor >
65 ,co::compare< compare >
70 test_rcu<set_type, print_stat>();
74 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_less_ic()
76 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
77 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
78 cc::ellen_bintree::make_set_traits<
79 cc::ellen_bintree::key_extractor< key_extractor >
81 ,co::item_counter< cds::atomicity::item_counter >
85 test_rcu<set_type, print_stat>();
89 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_cmp_ic()
91 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
92 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
93 cc::ellen_bintree::make_set_traits<
94 cc::ellen_bintree::key_extractor< key_extractor >
95 ,co::item_counter< cds::atomicity::item_counter >
96 ,co::compare< compare >
100 test_rcu<set_type, print_stat>();
104 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_less_stat()
106 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
107 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
108 cc::ellen_bintree::make_set_traits<
109 cc::ellen_bintree::key_extractor< key_extractor >
111 ,co::stat< cc::ellen_bintree::stat<> >
115 test_rcu<set_type, print_stat>();
119 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_cmp_ic_stat()
121 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
122 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
123 cc::ellen_bintree::make_set_traits<
124 cc::ellen_bintree::key_extractor< key_extractor >
125 ,co::item_counter< cds::atomicity::item_counter >
126 ,co::stat< cc::ellen_bintree::stat<> >
127 ,co::compare< compare >
131 test_rcu<set_type, print_stat>();
135 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_less_pool()
137 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
138 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
139 cc::ellen_bintree::make_set_traits<
140 cc::ellen_bintree::key_extractor< key_extractor >
142 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
143 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
147 test_rcu<set_type, print_stat>();
151 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_shb_less_pool_ic_stat()
153 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
154 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
155 cc::ellen_bintree::make_set_traits<
156 cc::ellen_bintree::key_extractor< key_extractor >
158 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
159 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
160 ,co::item_counter< cds::atomicity::item_counter >
161 ,co::stat< cc::ellen_bintree::stat<> >
165 test_rcu<set_type, print_stat>();