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"
10 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
12 typedef cds::urcu::gc< cds::urcu::signal_buffered<> > rcu_type;
16 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_member_cmp()
18 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
19 typedef member_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::member_hook< offsetof(item, hMember), 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_shb_member_less()
36 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
37 typedef member_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::member_hook< offsetof(item, hMember), 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_shb_member_cmpmix()
54 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
55 typedef member_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::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
60 ,co::less< less<item> >
61 ,ci::opt::disposer< faked_disposer >
62 ,co::compare< cmp<item> >
63 ,co::item_counter< cds::atomicity::item_counter >
67 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
71 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_member_cmp_stat()
73 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
74 typedef member_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::member_hook< offsetof(item, hMember), 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_shb_member_less_stat()
92 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
93 typedef member_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::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
98 ,co::less< less<item> >
99 ,ci::opt::disposer< faked_disposer >
100 ,co::stat< ci::skip_list::stat<> >
101 ,co::item_counter< cds::atomicity::item_counter >
105 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
109 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_member_cmpmix_stat()
111 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
112 typedef member_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::member_hook< offsetof(item, hMember), 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_shb_member_cmp_xorshift()
131 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
132 typedef member_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::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
137 ,co::compare< cmp<item> >
138 ,ci::opt::disposer< faked_disposer >
139 ,co::item_counter< cds::atomicity::item_counter >
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_shb_member_less_xorshift()
150 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
151 typedef member_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::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
156 ,co::less< less<item> >
157 ,ci::opt::disposer< faked_disposer >
158 ,co::item_counter< cds::atomicity::item_counter >
159 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
163 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
167 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_member_cmpmix_xorshift()
169 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
170 typedef member_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::member_hook< offsetof(item, hMember), 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_shb_member_cmp_xorshift_stat()
189 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
190 typedef member_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::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
195 ,co::compare< cmp<item> >
196 ,ci::opt::disposer< faked_disposer >
197 ,co::item_counter< cds::atomicity::item_counter >
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_shb_member_less_xorshift_stat()
209 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
210 typedef member_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::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
215 ,co::less< less<item> >
216 ,ci::opt::disposer< faked_disposer >
217 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
218 ,co::stat< ci::skip_list::stat<> >
219 ,co::item_counter< cds::atomicity::item_counter >
223 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
227 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_member_cmpmix_xorshift_stat()
229 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
230 typedef member_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::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
235 ,co::less< less<item> >
236 ,ci::opt::disposer< faked_disposer >
237 ,co::compare< cmp<item> >
238 ,co::item_counter< cds::atomicity::item_counter >
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> >();
249 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_member_cmp_pascal()
251 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
252 typedef member_int_item< ci::skip_list::node< rcu_type> > item;
254 typedef ci::SkipListSet< rcu_type, item,
255 ci::skip_list::make_traits<
256 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
257 ,co::compare< cmp<item> >
258 ,ci::opt::disposer< faked_disposer >
259 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
260 ,co::item_counter< cds::atomicity::item_counter >
264 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
268 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_member_less_pascal()
270 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
271 typedef member_int_item< ci::skip_list::node< rcu_type> > item;
273 typedef ci::SkipListSet< rcu_type, item,
274 ci::skip_list::make_traits<
275 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
276 ,co::less< less<item> >
277 ,ci::opt::disposer< faked_disposer >
278 ,co::item_counter< cds::atomicity::item_counter >
279 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
283 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
287 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_member_cmpmix_pascal()
289 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
290 typedef member_int_item< ci::skip_list::node< rcu_type> > item;
292 typedef ci::SkipListSet< rcu_type, item,
293 ci::skip_list::make_traits<
294 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
295 ,co::less< less<item> >
296 ,ci::opt::disposer< faked_disposer >
297 ,co::compare< cmp<item> >
298 ,co::item_counter< cds::atomicity::item_counter >
299 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
303 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
307 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_member_cmp_pascal_stat()
309 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
310 typedef member_int_item< ci::skip_list::node< rcu_type> > item;
312 typedef ci::SkipListSet< rcu_type, item,
313 ci::skip_list::make_traits<
314 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
315 ,co::compare< cmp<item> >
316 ,ci::opt::disposer< faked_disposer >
317 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
318 ,co::stat< ci::skip_list::stat<> >
319 ,co::item_counter< cds::atomicity::item_counter >
323 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
327 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_member_less_pascal_stat()
329 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
330 typedef member_int_item< ci::skip_list::node< rcu_type> > item;
332 typedef ci::SkipListSet< rcu_type, item,
333 ci::skip_list::make_traits<
334 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
335 ,co::less< less<item> >
336 ,ci::opt::disposer< faked_disposer >
337 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
338 ,co::stat< ci::skip_list::stat<> >
339 ,co::item_counter< cds::atomicity::item_counter >
343 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
347 void IntrusiveSkipListSetRCU::skiplist_rcu_shb_member_cmpmix_pascal_stat()
349 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
350 typedef member_int_item< ci::skip_list::node< rcu_type> > item;
352 typedef ci::SkipListSet< rcu_type, item,
353 ci::skip_list::make_traits<
354 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
355 ,co::less< less<item> >
356 ,ci::opt::disposer< faked_disposer >
357 ,co::compare< cmp<item> >
358 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
359 ,co::stat< ci::skip_list::stat<> >
360 ,co::item_counter< cds::atomicity::item_counter >
364 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();