3 #include "tree/hdr_ellenbintree_map.h"
4 #include <cds/urcu/signal_threaded.h>
5 #include <cds/container/ellen_bintree_map_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_threaded<> > rcu_type;
17 typedef cc::ellen_bintree::map_node<rcu_type, EllenBinTreeMapHdrTest::key_type, EllenBinTreeMapHdrTest::value_type> tree_leaf_node;
18 typedef cc::ellen_bintree::internal_node< EllenBinTreeMapHdrTest::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 EllenBinTreeMapHdrTest::EllenBinTree_rcu_sht_less()
33 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
34 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
35 cc::ellen_bintree::make_map_traits<
40 test_rcu<set_type, print_stat>();
44 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_sht_cmp()
46 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
47 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
48 cc::ellen_bintree::make_map_traits<
49 co::compare< compare >
53 test_rcu<set_type, print_stat>();
57 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_sht_cmpless()
59 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
60 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
61 cc::ellen_bintree::make_map_traits<
62 co::compare< compare >
67 test_rcu<set_type, print_stat>();
71 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_sht_less_ic()
73 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
74 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
75 cc::ellen_bintree::make_map_traits<
77 ,co::item_counter< cds::atomicity::item_counter >
81 test_rcu<set_type, print_stat>();
85 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_sht_cmp_ic()
87 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
88 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
89 cc::ellen_bintree::make_map_traits<
90 co::item_counter< cds::atomicity::item_counter >
91 ,co::compare< compare >
95 test_rcu<set_type, print_stat>();
99 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_sht_less_stat()
101 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
102 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
103 cc::ellen_bintree::make_map_traits<
105 ,co::stat< cc::ellen_bintree::stat<> >
109 test_rcu<set_type, print_stat>();
113 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_sht_cmp_ic_stat()
115 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
116 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
117 cc::ellen_bintree::make_map_traits<
118 co::item_counter< cds::atomicity::item_counter >
119 ,co::stat< cc::ellen_bintree::stat<> >
120 ,co::compare< compare >
124 test_rcu<set_type, print_stat>();
128 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_sht_less_pool()
130 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
131 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
132 cc::ellen_bintree::make_map_traits<
134 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
135 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
139 test_rcu<set_type, print_stat>();
143 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_sht_less_pool_ic_stat()
145 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
146 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
147 cc::ellen_bintree::make_map_traits<
149 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
150 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
151 ,co::item_counter< cds::atomicity::item_counter >
152 ,co::stat< cc::ellen_bintree::stat<> >
156 test_rcu<set_type, print_stat>();