3 #include "set/hdr_intrusive_skiplist_set_rcu.h"
5 #include <cds/urcu/signal_threaded.h>
6 #include <cds/intrusive/skip_list_rcu.h>
7 #include "map/print_skiplist_stat.h"
10 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
12 typedef cds::urcu::gc< cds::urcu::signal_threaded<> > rcu_type;
16 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_cmp()
18 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
19 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
21 typedef ci::SkipListSet< rcu_type, item,
22 ci::skip_list::make_traits<
23 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
24 ,co::compare< cmp<item> >
25 ,ci::opt::disposer< faked_disposer >
26 ,co::item_counter< cds::atomicity::item_counter >
30 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
34 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_less()
36 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
37 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
39 typedef ci::SkipListSet< rcu_type, item,
40 ci::skip_list::make_traits<
41 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
42 ,co::less< less<item> >
43 ,ci::opt::disposer< faked_disposer >
44 ,co::item_counter< cds::atomicity::item_counter >
48 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
52 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_cmpmix()
54 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
55 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
57 typedef ci::SkipListSet< rcu_type, item,
58 ci::skip_list::make_traits<
59 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
60 ,co::less< less<item> >
61 ,ci::opt::disposer< faked_disposer >
62 ,co::item_counter< cds::atomicity::item_counter >
63 ,co::compare< cmp<item> >
67 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
71 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_cmp_stat()
73 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
74 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
76 typedef ci::SkipListSet< rcu_type, item,
77 ci::skip_list::make_traits<
78 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
79 ,co::compare< cmp<item> >
80 ,ci::opt::disposer< faked_disposer >
81 ,co::stat< ci::skip_list::stat<> >
82 ,co::item_counter< cds::atomicity::item_counter >
86 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
90 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_less_stat()
92 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
93 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
95 typedef ci::SkipListSet< rcu_type, item,
96 ci::skip_list::make_traits<
97 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
98 ,co::less< less<item> >
99 ,co::item_counter< cds::atomicity::item_counter >
100 ,ci::opt::disposer< faked_disposer >
101 ,co::stat< ci::skip_list::stat<> >
105 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
109 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_cmpmix_stat()
111 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
112 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
114 typedef ci::SkipListSet< rcu_type, item,
115 ci::skip_list::make_traits<
116 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
117 ,co::less< less<item> >
118 ,ci::opt::disposer< faked_disposer >
119 ,co::compare< cmp<item> >
120 ,co::stat< ci::skip_list::stat<> >
121 ,co::item_counter< cds::atomicity::item_counter >
125 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
129 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_cmp_xorshift()
131 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
132 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
134 typedef ci::SkipListSet< rcu_type, item,
135 ci::skip_list::make_traits<
136 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
137 ,co::compare< cmp<item> >
138 ,co::item_counter< cds::atomicity::item_counter >
139 ,ci::opt::disposer< faked_disposer >
140 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
144 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
148 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_less_xorshift()
150 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
151 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
153 typedef ci::SkipListSet< rcu_type, item,
154 ci::skip_list::make_traits<
155 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
156 ,co::less< less<item> >
157 ,ci::opt::disposer< faked_disposer >
158 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
159 ,co::item_counter< cds::atomicity::item_counter >
163 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
167 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_cmpmix_xorshift()
169 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
170 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
172 typedef ci::SkipListSet< rcu_type, item,
173 ci::skip_list::make_traits<
174 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
175 ,co::less< less<item> >
176 ,ci::opt::disposer< faked_disposer >
177 ,co::compare< cmp<item> >
178 ,co::item_counter< cds::atomicity::item_counter >
179 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
183 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
187 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_cmp_xorshift_stat()
189 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
190 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
192 typedef ci::SkipListSet< rcu_type, item,
193 ci::skip_list::make_traits<
194 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
195 ,co::compare< cmp<item> >
196 ,co::item_counter< cds::atomicity::item_counter >
197 ,ci::opt::disposer< faked_disposer >
198 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
199 ,co::stat< ci::skip_list::stat<> >
203 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
207 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_less_xorshift_stat()
209 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
210 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
212 typedef ci::SkipListSet< rcu_type, item,
213 ci::skip_list::make_traits<
214 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
215 ,co::less< less<item> >
216 ,ci::opt::disposer< faked_disposer >
217 ,co::item_counter< cds::atomicity::item_counter >
218 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
219 ,co::stat< ci::skip_list::stat<> >
223 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
227 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_cmpmix_xorshift_stat()
229 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
230 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
232 typedef ci::SkipListSet< rcu_type, item,
233 ci::skip_list::make_traits<
234 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
235 ,co::less< less<item> >
236 ,co::item_counter< cds::atomicity::item_counter >
237 ,ci::opt::disposer< faked_disposer >
238 ,co::compare< cmp<item> >
239 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
240 ,co::stat< ci::skip_list::stat<> >
244 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
250 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_cmp_pascal()
252 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
253 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
255 typedef ci::SkipListSet< rcu_type, item,
256 ci::skip_list::make_traits<
257 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
258 ,co::compare< cmp<item> >
259 ,co::item_counter< cds::atomicity::item_counter >
260 ,ci::opt::disposer< faked_disposer >
261 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
265 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
269 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_less_pascal()
271 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
272 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
274 typedef ci::SkipListSet< rcu_type, item,
275 ci::skip_list::make_traits<
276 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
277 ,co::less< less<item> >
278 ,co::item_counter< cds::atomicity::item_counter >
279 ,ci::opt::disposer< faked_disposer >
280 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
284 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
288 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_cmpmix_pascal()
290 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
291 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
293 typedef ci::SkipListSet< rcu_type, item,
294 ci::skip_list::make_traits<
295 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
296 ,co::less< less<item> >
297 ,ci::opt::disposer< faked_disposer >
298 ,co::compare< cmp<item> >
299 ,co::item_counter< cds::atomicity::item_counter >
300 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
304 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
308 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_cmp_pascal_stat()
310 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
311 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
313 typedef ci::SkipListSet< rcu_type, item,
314 ci::skip_list::make_traits<
315 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
316 ,co::compare< cmp<item> >
317 ,ci::opt::disposer< faked_disposer >
318 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
319 ,co::stat< ci::skip_list::stat<> >
320 ,co::item_counter< cds::atomicity::item_counter >
324 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
328 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_less_pascal_stat()
330 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
331 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
333 typedef ci::SkipListSet< rcu_type, item,
334 ci::skip_list::make_traits<
335 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
336 ,co::less< less<item> >
337 ,ci::opt::disposer< faked_disposer >
338 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
339 ,co::stat< ci::skip_list::stat<> >
340 ,co::item_counter< cds::atomicity::item_counter >
344 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
348 void IntrusiveSkipListSetRCU::skiplist_rcu_sht_base_cmpmix_pascal_stat()
350 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
351 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
353 typedef ci::SkipListSet< rcu_type, item,
354 ci::skip_list::make_traits<
355 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
356 ,co::less< less<item> >
357 ,ci::opt::disposer< faked_disposer >
358 ,co::compare< cmp<item> >
359 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
360 ,co::stat< ci::skip_list::stat<> >
361 ,co::item_counter< cds::atomicity::item_counter >
365 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();