3 #include "set/hdr_intrusive_skiplist_set_rcu.h"
5 #include <cds/urcu/signal_buffered.h>
6 #include <cds/intrusive/skip_list_rcu.h>
7 #include "map/print_skiplist_stat.h"
11 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
13 typedef cds::urcu::gc< cds::urcu::signal_buffered<> > rcu_type;
17 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_cmp()
19 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
20 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
22 typedef ci::SkipListSet< rcu_type, item,
23 ci::skip_list::make_traits<
24 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
25 ,co::compare< cmp<item> >
26 ,ci::opt::disposer< faked_disposer >
27 ,co::item_counter< cds::atomicity::item_counter >
31 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
35 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_less()
37 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
38 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
40 typedef ci::SkipListSet< rcu_type, item,
41 ci::skip_list::make_traits<
42 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
43 ,co::less< less<item> >
44 ,ci::opt::disposer< faked_disposer >
45 ,co::item_counter< cds::atomicity::item_counter >
49 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
53 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_cmpmix()
55 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
56 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
58 typedef ci::SkipListSet< rcu_type, item,
59 ci::skip_list::make_traits<
60 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
61 ,co::less< less<item> >
62 ,ci::opt::disposer< faked_disposer >
63 ,co::item_counter< cds::atomicity::item_counter >
64 ,co::compare< cmp<item> >
68 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
72 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_cmp_stat()
74 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
75 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
77 typedef ci::SkipListSet< rcu_type, item,
78 ci::skip_list::make_traits<
79 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
80 ,co::compare< cmp<item> >
81 ,ci::opt::disposer< faked_disposer >
82 ,co::stat< ci::skip_list::stat<> >
83 ,co::item_counter< cds::atomicity::item_counter >
87 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
91 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_less_stat()
93 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
94 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
96 typedef ci::SkipListSet< rcu_type, item,
97 ci::skip_list::make_traits<
98 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
99 ,co::less< less<item> >
100 ,co::item_counter< cds::atomicity::item_counter >
101 ,ci::opt::disposer< faked_disposer >
102 ,co::stat< ci::skip_list::stat<> >
106 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
110 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_cmpmix_stat()
112 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
113 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
115 typedef ci::SkipListSet< rcu_type, item,
116 ci::skip_list::make_traits<
117 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
118 ,co::less< less<item> >
119 ,ci::opt::disposer< faked_disposer >
120 ,co::compare< cmp<item> >
121 ,co::stat< ci::skip_list::stat<> >
122 ,co::item_counter< cds::atomicity::item_counter >
126 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
130 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_cmp_xorshift()
132 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
133 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
135 typedef ci::SkipListSet< rcu_type, item,
136 ci::skip_list::make_traits<
137 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
138 ,co::compare< cmp<item> >
139 ,co::item_counter< cds::atomicity::item_counter >
140 ,ci::opt::disposer< faked_disposer >
141 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
145 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
149 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_less_xorshift()
151 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
152 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
154 typedef ci::SkipListSet< rcu_type, item,
155 ci::skip_list::make_traits<
156 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
157 ,co::less< less<item> >
158 ,ci::opt::disposer< faked_disposer >
159 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
160 ,co::item_counter< cds::atomicity::item_counter >
164 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
168 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_cmpmix_xorshift()
170 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
171 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
173 typedef ci::SkipListSet< rcu_type, item,
174 ci::skip_list::make_traits<
175 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
176 ,co::less< less<item> >
177 ,ci::opt::disposer< faked_disposer >
178 ,co::compare< cmp<item> >
179 ,co::item_counter< cds::atomicity::item_counter >
180 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
184 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
188 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_cmp_xorshift_stat()
190 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
191 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
193 typedef ci::SkipListSet< rcu_type, item,
194 ci::skip_list::make_traits<
195 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
196 ,co::compare< cmp<item> >
197 ,co::item_counter< cds::atomicity::item_counter >
198 ,ci::opt::disposer< faked_disposer >
199 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
200 ,co::stat< ci::skip_list::stat<> >
204 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
208 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_less_xorshift_stat()
210 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
211 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
213 typedef ci::SkipListSet< rcu_type, item,
214 ci::skip_list::make_traits<
215 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
216 ,co::less< less<item> >
217 ,ci::opt::disposer< faked_disposer >
218 ,co::item_counter< cds::atomicity::item_counter >
219 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
220 ,co::stat< ci::skip_list::stat<> >
224 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
228 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_cmpmix_xorshift_stat()
230 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
231 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
233 typedef ci::SkipListSet< rcu_type, item,
234 ci::skip_list::make_traits<
235 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
236 ,co::less< less<item> >
237 ,co::item_counter< cds::atomicity::item_counter >
238 ,ci::opt::disposer< faked_disposer >
239 ,co::compare< cmp<item> >
240 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
241 ,co::stat< ci::skip_list::stat<> >
245 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
251 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_cmp_pascal()
253 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
254 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
256 typedef ci::SkipListSet< rcu_type, item,
257 ci::skip_list::make_traits<
258 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
259 ,co::compare< cmp<item> >
260 ,co::item_counter< cds::atomicity::item_counter >
261 ,ci::opt::disposer< faked_disposer >
262 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
266 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
270 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_less_pascal()
272 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
273 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
275 typedef ci::SkipListSet< rcu_type, item,
276 ci::skip_list::make_traits<
277 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
278 ,co::less< less<item> >
279 ,co::item_counter< cds::atomicity::item_counter >
280 ,ci::opt::disposer< faked_disposer >
281 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
285 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
289 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_cmpmix_pascal()
291 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
292 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
294 typedef ci::SkipListSet< rcu_type, item,
295 ci::skip_list::make_traits<
296 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
297 ,co::less< less<item> >
298 ,ci::opt::disposer< faked_disposer >
299 ,co::compare< cmp<item> >
300 ,co::item_counter< cds::atomicity::item_counter >
301 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
305 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
309 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_cmp_pascal_stat()
311 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
312 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
314 typedef ci::SkipListSet< rcu_type, item,
315 ci::skip_list::make_traits<
316 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
317 ,co::compare< cmp<item> >
318 ,ci::opt::disposer< faked_disposer >
319 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
320 ,co::stat< ci::skip_list::stat<> >
321 ,co::item_counter< cds::atomicity::item_counter >
325 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
329 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_less_pascal_stat()
331 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
332 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
334 typedef ci::SkipListSet< rcu_type, item,
335 ci::skip_list::make_traits<
336 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
337 ,co::less< less<item> >
338 ,ci::opt::disposer< faked_disposer >
339 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
340 ,co::stat< ci::skip_list::stat<> >
341 ,co::item_counter< cds::atomicity::item_counter >
345 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
349 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_base_cmpmix_pascal_stat()
351 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
352 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
354 typedef ci::SkipListSet< rcu_type, item,
355 ci::skip_list::make_traits<
356 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
357 ,co::less< less<item> >
358 ,ci::opt::disposer< faked_disposer >
359 ,co::compare< cmp<item> >
360 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
361 ,co::stat< ci::skip_list::stat<> >
362 ,co::item_counter< cds::atomicity::item_counter >
366 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
372 CPPUNIT_TEST_SUITE_REGISTRATION(set::IntrusiveSkipListSetRCU);