3 #include "list/hdr_intrusive_michael.h"
4 #include <cds/urcu/signal_buffered.h>
5 #include <cds/intrusive/michael_list_rcu.h>
8 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
10 typedef cds::urcu::gc< cds::urcu::signal_buffered<> > RCU;
14 void IntrusiveMichaelListHeaderTest::RCU_SHB_base_cmp()
16 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
17 typedef base_int_item< RCU > item;
18 struct traits : public ci::michael_list::traits
20 typedef ci::michael_list::base_hook< co::gc<RCU> > hook;
21 typedef cmp<item> compare;
22 typedef faked_disposer disposer;
24 typedef ci::MichaelList< RCU, item, traits > list;
28 void IntrusiveMichaelListHeaderTest::RCU_SHB_base_less()
30 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
31 typedef base_int_item< RCU > item;
32 struct traits : public ci::michael_list::traits
34 typedef ci::michael_list::base_hook< co::gc<RCU> > hook;
35 typedef IntrusiveMichaelListHeaderTest::less<item> less;
36 typedef faked_disposer disposer;
38 typedef ci::MichaelList< RCU, item, traits > list;
42 void IntrusiveMichaelListHeaderTest::RCU_SHB_base_cmpmix()
44 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
45 typedef base_int_item< RCU > item;
46 typedef ci::MichaelList< RCU
48 ,ci::michael_list::make_traits<
49 ci::opt::hook< ci::michael_list::base_hook< co::gc<RCU> > >
50 ,co::less< less<item> >
51 ,co::compare< cmp<item> >
52 ,ci::opt::disposer< faked_disposer >
58 void IntrusiveMichaelListHeaderTest::RCU_SHB_base_ic()
60 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
61 typedef base_int_item< RCU > item;
62 typedef ci::MichaelList< RCU
64 ,ci::michael_list::make_traits<
65 ci::opt::hook< ci::michael_list::base_hook< co::gc<RCU> > >
66 ,co::less< less<item> >
67 ,co::compare< cmp<item> >
68 ,ci::opt::disposer< faked_disposer >
69 ,co::item_counter< cds::atomicity::item_counter >
75 void IntrusiveMichaelListHeaderTest::RCU_SHB_member_cmp()
77 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
78 typedef member_int_item< RCU > item;
79 typedef ci::MichaelList< RCU
81 ,ci::michael_list::make_traits<
82 ci::opt::hook< ci::michael_list::member_hook<
83 offsetof( item, hMember ),
86 ,co::compare< cmp<item> >
87 ,ci::opt::disposer< faked_disposer >
93 void IntrusiveMichaelListHeaderTest::RCU_SHB_member_less()
95 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
96 typedef member_int_item< RCU > item;
97 typedef ci::MichaelList< RCU
99 ,ci::michael_list::make_traits<
100 ci::opt::hook< ci::michael_list::member_hook<
101 offsetof( item, hMember ),
104 ,co::less< less<item> >
105 ,ci::opt::disposer< faked_disposer >
108 test_rcu_int<list>();
111 void IntrusiveMichaelListHeaderTest::RCU_SHB_member_cmpmix()
113 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
114 typedef member_int_item< RCU > item;
115 typedef ci::MichaelList< RCU
117 ,ci::michael_list::make_traits<
118 ci::opt::hook< ci::michael_list::member_hook<
119 offsetof( item, hMember ),
122 ,co::less< less<item> >
123 ,co::compare< cmp<item> >
124 ,ci::opt::disposer< faked_disposer >
127 test_rcu_int<list>();
130 void IntrusiveMichaelListHeaderTest::RCU_SHB_member_ic()
132 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
133 typedef member_int_item< RCU > item;
134 typedef ci::MichaelList< RCU
136 ,ci::michael_list::make_traits<
137 ci::opt::hook< ci::michael_list::member_hook<
138 offsetof( item, hMember ),
141 ,co::compare< cmp<item> >
142 ,ci::opt::disposer< faked_disposer >
143 ,co::item_counter< cds::atomicity::item_counter >
146 test_rcu_int<list>();